中介者模式

一、背景

       试想如果每台计算机之间通信,我们都在这两台计算机之间拉一根网线,如果多台计算机之间通信的话是不是就要每台(除了它自己)和其他的所有计算机拉一根网线,这样形就会形成复杂的网状结构,搭建网络的成本可想而知有多高。看到这里是不是想到了我们学计算机网络的时候通过星状结构便能解决此问题。多台计算机之间放一个路由器,每台计算机都和该路由器相连,计算机之间通信通过该路由器进行转发,这样便大大减少了网线的条数。中介者模式正是这样的思想。

二、概念

       中介者模式:用一个中介对象来封装一系统对象交互,中介者使得对象间不需要显示地引用,使各对象之间松耦合,从而可以独立地改变他们之间的交互。

三、代码实例

/**
 * 中介者接口
 */
interface Mediator {
	public void createMediator();

	public void forward();
}

/**
 * 具体中介者 相当于路由器
 */
class MyMediator implements Mediator {
	private IComputer computerA;
	private IComputer computerB;

	@Override
	public void createMediator() {
		computerA = new ComputerA();
		computerB = new ComputerB();
	}

	@Override
	public void forward() {
		computerA.sendMessageTo(computerB);
	}
}

/**
 * 计算机抽象类
 */
interface IComputer {
	public void sendMessageTo(IComputer computer);

	public void acceptMessageFrom(IComputer computer);
}

/**
 * 具体计算机A 中介者管理的具体角色
 */
class ComputerA implements IComputer {

	@Override
	public void sendMessageTo(IComputer computer) {
		System.out.println(this + ":sendMessage to:" + computer);
		computer.acceptMessageFrom(this);

	}

	@Override
	public void acceptMessageFrom(IComputer computer) {
		System.out.println(this + ":acceptMessage from:" + computer);
	}

}

/**
 * 具体计算机B 中介者管理的具体角色
 */
class ComputerB implements IComputer {

	@Override
	public void sendMessageTo(IComputer computer) {
		System.out.println(this + ":sendMessage to:" + computer);
		computer.acceptMessageFrom(this);
	}

	@Override
	public void acceptMessageFrom(IComputer computer) {
		System.out.println(this + ":acceptMessage from:" + computer);
	}

}

public class MediatorPatternDemo {
	public static void main(String[] args) {
		Mediator mediator = new MyMediator();
		mediator.createMediator();
		mediator.forward();
	}
}

四、总结

      1.中介者模式使得各实体类之间的网状结构变为星状结构,极大地减轻了类之间的耦合度。

      2.使用中介者模式,只需关心各个实体类和Mediator类的关系,具体类类之间的关系及调度交给Mediator就行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值