设计模式之调停者模式
来源:互联网 发布:公司内部流程优化 编辑:程序博客网 时间:2024/04/29 17:15
调停者模式是对象的行为模式。调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显引用。从而使它们可以较松散地耦合。当这些对象中的某些对象之间的相互作用发生改变时,不会立即影响到其他的一些对象之间的相互作用。从而保证这些相互作用可以彼此独立地变化。
调停者模式包括以下角色:
抽象调停者(Mediator)角色:
定义出同事对象到调停者对象的接口,其中主要方法是一个(或多个)事件方法。
具体调停者(ConcreteMediator)角色:
实现了抽象调停者所声明的事件方法。具体调停者知晓所有的具体同事类,并负责具体的协调各同事对象的交互关系。
抽象同事类(Colleague)角色:
定义出调停者到同事对象的接口。同事对象只知道调停者而不知道其余的同事对象。
具体同事类(ConcreteColleague)角色:
所有的具体同事类均从抽象同事类继承而来。实现自己的业务,在需要与其他同事通信的时候,就与持有的调停者通信,调停者会负责与其他的同事交互。
抽象调停者类
public interface Mediator { /** * 同事对象在自身改变的时候来通知调停者方法 * 让调停者去负责相应的与其他同事对象的交互 */ public void changed(Colleague c);}
具体调停者类
public class ConcreteMediator implements Mediator { //持有并维护同事A private ConcreteColleagueA colleagueA; //持有并维护同事B private ConcreteColleagueB colleagueB; public void setColleagueA(ConcreteColleagueA colleagueA) { this.colleagueA = colleagueA; } public void setColleagueB(ConcreteColleagueB colleagueB) { this.colleagueB = colleagueB; } @Override public void changed(Colleague c) { /** * 某一个同事类发生了变化,通常需要与其他同事交互 * 具体协调相应的同事对象来实现协作行为 */ }}
抽象同事类
public abstract class Colleague { //持有一个调停者对象 private Mediator mediator; /** * 构造函数 */ public Colleague(Mediator mediator){ this.mediator = mediator; } /** * 获取当前同事类对应的调停者对象 */ public Mediator getMediator() { return mediator; } }
具体同事类
public class ConcreteColleagueA extends Colleague { public ConcreteColleagueA(Mediator mediator) { super(mediator); } /** * 示意方法,执行某些操作 */ public void operation(){ //在需要跟其他同事通信的时候,通知调停者对象 getMediator().changed(this); }}
public class ConcreteColleagueB extends Colleague { public ConcreteColleagueB(Mediator mediator) { super(mediator); } /** * 示意方法,执行某些操作 */ public void operation(){ //在需要跟其他同事通信的时候,通知调停者对象 getMediator().changed(this); }}
0 0
- 设计模式之---调停者模式
- 设计模式之调停者模式
- 设计模式之调停者模式
- 设计模式之:调停者模式
- 设计模式之调停者模式
- 设计模式之---调停者模式
- 设计模式之调停者模式
- 设计模式之调停者模式
- 设计模式:调停者模式
- 设计模式之中介者模式(调停模式)
- 设计模式之调停者模式(2)例子
- 《Java设计模式》之调停者模式(Mediator)
- (二十五)Java设计模式之调停者模式
- java设计模式---调停者模式
- java设计模式---调停者模式
- java设计模式笔记:调停者模式
- java 设计模式 调停者模式
- Java设计模式--调停者模式Mediator
- Github上如何给别人贡献代码
- boost中信号的应用
- MySQL索引背后的数据结构及算法原理
- Python 包管理
- 已经开发好的网站,进行多语言支持
- 设计模式之调停者模式
- 拓扑排序模板
- patch文件的语法
- 使用ajax+HTML+servlet实现数据模板填充
- 通过UIDocumentInteractionController预览和分享"史蒂夫•乔布斯传"
- 视频播放
- 通过UIActivityViewController实现更多分享服务
- win10系统调用架构分析
- js实现复制到粘贴板 ZeroClipboard