`
gengu
  • 浏览: 86768 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

中介者模式

阅读更多

中介者模式的定义:用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示的相互作用,从而使其耦合松散,而且可以独立的改变他们的交互。

 

中介者模式有很广泛的应用,比如在MVC框架中,C就是一个中介者,他来协调V和M的调用,减少View和Model层得交互,在很多优秀的开源框架中都有很好的体现。

 

Mediator :抽象中介者角色 它定义统一的接口,用户各个同事角色之间的通信

 

Concrete Mediator :具体中介者角色  它是中介者角色通过协调各同事角色实现协作行为,因此它必须依赖于各个同事角色。

 

Colleague :同事角色  每一个同事角色都必须知道中介者角色,并且在和其他的同事进行通信的时候一定要通过中介者角色,每个同事类的行为分为两种,一种是同事本身的行为,比如改变对象本身的状态。第二种是必须依赖中介者才能完成的行为,叫做依赖方法。

 

在计算机的世界里有一个很重要的思想,就是中介的思想,比如在两个事物之间之间联系变得很困难的时候就会想到增加一个中间件,中介者模式也是这样,当两者同事联系变得复杂的时候就增加一个中介者。

计算机网络中的早期的集线器不就是这样的吗?一个星型的链接让通信变得简单很多。

 

员工类

package com.gengu.中介者;

/**
 * 定义通用员工类
 * */
public abstract class Staff {

	/**
	 * 每一个员工是必须要有一个中介者给它服务的
	 */
	protected Mediator mediator;
	
	public Staff(Mediator mediator){
		this.mediator = mediator;
	}
	//自己做自己的事
	public abstract void doSomeThing();
	//寻求帮助
	public abstract void AskForHelp();
	//帮助
	public abstract void HelpOther();
}

员工A 和员工B

package com.gengu.中介者;

public class ColleagueA extends Staff{

	public ColleagueA(Mediator mediator) {
		super(mediator);
	}
	
	//定义一些自己的工作
	public void doSomeThing(){
		System.out.println("I am working");
	}
	
	//定义一个依赖方法
	public void AskForHelp(){
		mediator.BhellpA();
		//System.out.println("I am A,I am asking for help");
	}
	
	//再定义一个方法
	public void HelpOther(){
		mediator.AhellpB();
	}

}


package com.gengu.中介者;

public class ColleagueB extends Staff{

	public ColleagueB(Mediator mediator) {
		super(mediator);
	}
	
	//定义一些自己的工作
	public void doSomeThing(){
		System.out.println("I am working");
	}
	
	//定义一个依赖方法
	public void AskForHelp(){
		super.mediator.AhellpB();
	}

	@Override
	public void HelpOther() {
		super.mediator.BhellpA();
	}

}

 抽象中介者

package com.gengu.中介者;

/**
 * 中介者抽象类
 * */
public abstract class Mediator {

	protected ColleagueA staffA = null;
	protected ColleagueB staffB = null;
	
	public ColleagueA getStaffA() {
		return staffA;
	}
	public void setStaffA(ColleagueA staffA) {
		this.staffA = staffA;
	}
	public ColleagueB getStaffB() {
		return staffB;
	}
	public void setStaffB(ColleagueB staffB) {
		this.staffB = staffB;
	}
	
	public abstract void AhellpB();
	public abstract void BhellpA();
	
}

 实体中介者

package com.gengu.中介者;

public class ConcreteMediator extends Mediator{

	@Override
	public void AhellpB() {
		//staffA.HelpOther();
		System.out.println("A is helping B");
	}

	@Override
	public void BhellpA() {
		System.out.println("B is helping A");
		//staffB.HelpOther();
	}

}

 

就是把本来他们直接交互的那种关系加一个中介,这样可以让复杂的关系调用变得简单起来。

 

分享到:
评论

相关推荐

    P2P终结者4.07

    4. **隐藏模式**:为了防止被控制的设备发现并禁用,P2P终结者还提供了隐藏运行模式,使得软件能在后台安静地工作。 5. **安装与配置**:WinPcap_4_0_2.exe是Windows Packet Capture库,它是P2P终结者等网络监控...

    P2P终结者

    4. **隐藏模式**:为了防止被检测和反制,P2P终结者还可以在运行时保持低调,不显示在任务管理器中。 使用P2P终结者时需要注意: 1. **权限问题**:在使用此软件前,确保你有管理员权限,因为需要对局域网内的其他...

    P2P终结者 限速

    P2P终结者限速软件的出现,正是为了解决这一问题,它能够有效控制局域网内的P2P流量,保证网络资源的公平使用。 首先,我们需要了解什么是P2P技术。P2P技术,即对等网络技术,是一种网络架构,在这种架构中,每个...

    最新P2P终结者

    【P2P终结者详解】 P2P终结者是一款网络管理软件,主要用于限制局域网内的P2P(Peer-to-Peer)流量,以优化网络带宽资源的分配。P2P技术常被用于文件共享、在线视频流媒体等应用,如BT下载、迅雷下载等,这些应用在...

    批量更名终结者2022一款可以对磁盘文件和文件夹进行多功能批量更名操作的实用工具.rar

    批量更名终结者20.22单文件版批量更名终结者是一款可以对磁盘文件和文件夹进行多功能批量更名操作的实用工具。 拥有简化的资源管理器功能,强大的全盘搜索功能,高级的多模式过滤功能,列表整理打印功能......... ...

    终结者

    标题“终结者”可能指的是一个项目、软件或者系统的名字,但它没有提供足够的信息来确定具体是哪个领域的IT知识点。描述中的“终结者”同样没有提供额外的信息,可能是寓意该项目或软件具有终结某种问题或挑战的能力...

    p2p终结者4.34

    P2P终结者是由Net.Soft工作室开发的一套专门用来控制企业网络P2P下载流量的网络管理软件(zol提供P2P终结者下载)。 P2P终结者针对目前P2P软件过多占用带宽的问题,提供了一个非常简单的解决方案。P2P终结者基于底层...

    p2p终结者 4.18

    【标题】"p2p终结者 4.18" 是一个网络管理工具,主要用于限制局域网内的P2P流量,确保网络的稳定运行。这个版本表明它是在4.18更新的,可能包括了对之前版本的优化和新功能的添加。 【描述】提到“安装成功,可以...

    P2P终结者增强 版

    【P2P终结者增强版】是一款专门针对局域网环境设计的网络管理软件,它允许用户限制局域网内其他计算机的网速。这款工具主要用于优化网络资源分配,防止某些设备过度占用带宽,从而影响整个网络的性能。然而,值得...

    p2p终结者p2p终结者

    【标题】:“P2P终结者”是一款网络管理软件,主要功能是对局域网内的P2P流量进行控制,防止因P2P下载或上传占用过多带宽导致其他用户网络速度变慢。P2P技术( Peer-to-Peer)常用于文件共享、流媒体服务等场景,如...

    局域网终结者1.0

    在局域网终结者中,WinPcap可能被用来抓取和分析网络流量,以便找出可以利用的网络行为模式或IP地址信息。 **局域网终结者.exe** 这个可执行文件是局域网终结者的主要程序。它通过发送特定的数据包或者模拟IP冲突来...

    P2P终结者最高权限

    【P2P终结者最高权限】是一款网络管理软件,主要用于限制局域网内其他计算机的P2P(Peer-to-Peer)流量,以确保网络的流畅性和公平使用。P2P技术常见于文件共享、流媒体服务等场景,如BitTorrent、eMule等,这些应用...

    P2P后台终结者源码

    《P2P后台终结者源码解析》 P2P后台终结者,作为一个技术话题,主要涉及的是网络通信和系统管理领域。P2P(Peer-to-Peer)是一种分布式网络架构,它允许网络中的每个节点既是客户端也是服务器,能够直接进行数据...

    p2p终结者.rar

    《P2P终结者:网络流量管理与优化的探索》 在互联网的世界里,P2P(Peer-to-Peer)技术是一种广泛应用的分布式通信模式,它允许网络中的多个用户节点直接进行数据交换,无需通过中心服务器。然而,P2P应用在带来...

    p2p网络终结者4.7

    《P2P网络终结者4.7:局域网带宽管理利器》 P2P网络终结者4.7是一款专为局域网环境设计的带宽管理工具,它的主要功能在于帮助网络管理员或者普通用户有效地控制局域网内各台计算机对网络资源的占用,确保网络的公平...

    p2p终结者2.07免安装版

    《P2P终结者2.07免安装版:网络流量管理利器》 P2P终结者2.07免安装版是一款专为用户设计的网络流量管理工具,尤其适用于那些面临网络带宽被过度占用问题的用户。该版本无需进行繁琐的安装过程,用户可以直接运行,...

    P2P终结者 限制网速

    **P2P终结者**是一款网络管理工具,主要用于在局域网环境中限制其他计算机的P2P下载速度,以确保网络资源的公平分配。这款软件的出现,主要是为了解决因P2P软件大量占用带宽导致的网络拥堵问题,尤其在企业、学校等...

    广告终结者3.2.12.zip

    值得一提的是,虽然广告终结者3.2.12.zip是针对360极速浏览器特别设计的,但是其标签却是“chrome”,这表明该插件可能也兼容Chrome浏览器,或者开发者正在计划推出适用于Chrome版本的广告终结者。不过,对于大多数...

    P2P终结者4.02

    《P2P终结者4.02:网络管理与P2P流量控制解析》 P2P终结者4.02是一款专为局域网环境设计的网络管理工具,其主要功能是监控并控制局域网内的P2P软件活动,以达到限制其他主机网络连接的目的。在本文中,我们将深入...

    广告终结者

    "广告终结者"是一款针对浏览器广告的插件,它的主要功能是帮助用户在浏览网页时有效地去除各种形式的广告,从而提升上网体验。这款插件特别适用于谷歌浏览器Chrome,通过简单易行的操作步骤,用户可以轻松地将其安装...

Global site tag (gtag.js) - Google Analytics