23.Mediator-中介者模式
来源:互联网 发布:无损音乐下载网站知乎 编辑:程序博客网 时间:2024/05/21 10:10
Mediator 中介者模式
中介模式:
用一个中介对象(中介者)来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,
而且可以独立地改变它们之间的交互。中介者模式又称为调停者模式,它是一种对象行为型模式。结构图:
示例类图:
示例代码:
public interface Mediator { public abstract void work(Colleague colleague);}public class ConcreteMediator implements Mediator { private CDDriver cdDriver; private SoundCard soundCard; @Override public void work(Colleague colleague) { if (cdDriver == colleague) { cdDriver.readSound(); } else if (soundCard == colleague) { soundCard.playSound(); } } public void setCdDriver(CDDriver cdDriver) { this.cdDriver = cdDriver; } public void setSoundCard(SoundCard soundCard) { this.soundCard = soundCard; }}// Colleague 同事类public abstract class Colleague { protected Mediator mediator; public Colleague(Mediator mediator) { this.mediator = mediator; } public abstract void work();}// ConcreteMediatorpublic class CDDriver extends Colleague { public CDDriver(Mediator mediator) { super(mediator); } @Override public void work() { mediator.work(this); } public void readSound() { System.out.println("CDDriver readSound."); }}public class SoundCard extends Colleague { public SoundCard(Mediator mediator) { super(mediator); } @Override public void work() { mediator.work(this); } public void playSound() { System.out.println("SoundCard playSound."); }}// 测试public class MediatorTest { public static void main(String[] args) { ConcreteMediator mediator = new ConcreteMediator(); CDDriver cdDriver = new CDDriver(mediator); SoundCard soundCard = new SoundCard(mediator); mediator.setCdDriver(cdDriver); mediator.setSoundCard(soundCard); cdDriver.work(); soundCard.work(); }}
角色:
Mediator :中介者接口/抽象类。
在里面定义了各个同事之间相互交互所需要的方法,
可以是公共的方法,如Change方法,也可以是小范围的交互方法。ConcreteMediator :具体的中介者实现对象。
它需要了解并为维护每个同事对象,并负责具体的协调各个同事对象的交互关系。Colleague :同事类的定义,通常实现成为抽象类。
主要负责约束同事对象的类型,并实现一些具体同事类之间的公共功能,比如,每个具体同事类都应该知道中介者对象,
也就是每个同事对象都会持有中介者对象的引用,这个功能可定义在这个类中。ConcreteColleague :具体的同事类,实现自己的业务。
需要与其他同事对象交互时,就通知中介对象,中介对象会负责后续的交互。
0 0
- 23.Mediator-中介者模式
- 23.Mediator-中介者模式
- 中介者(Mediator)模式
- Mediator中介者模式
- Mediator 中介者模式
- 中介者模式Mediator
- 中介者模式Mediator
- Mediator模式(中介者)
- Mediator中介者模式
- Mediator 中介者模式
- 中介者模式(Mediator)
- 中介者模式/Mediator
- 中介者模式(Mediator)
- mediator 中介者模式
- 中介者模式(Mediator)
- 中介者模式-Mediator
- Mediator - 中介者模式
- Mediator 中介者模式
- iOS Crash 类型
- 安卓调用系统相机拍照,并把图片保存到SD卡中 进行 尺寸和质量的压缩
- java项目中普遍存在的一个bug,用户直接可以通过url访问本人没有权限的页面
- 关于oracle的ORA-00607和ORA-00600错误解决方法
- python 文件读写时用open还是codecs.open
- 23.Mediator-中介者模式
- X-code不联想,类库无法查看解决办法
- C++11 毫秒时间
- VirtualBox(启动失败:intel_rapl no valid rapl domains found in package 0 error VirtualBox)
- 24.Interpreter-解释器模式
- 【干货分享】流程DEMO-人员调动流程
- B+树在数据库索引中的应用
- 《陈康二逼》
- Permutation Sequence