设计模式之Mediator模式(笔记)
来源:互联网 发布:我的世界制作js软件 编辑:程序博客网 时间:2024/05/08 06:08
中介者模式:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式的相互引用,从而使其耦合松散,而且可以独立的改变它们之间的交互。
使用场合:中介者模式一般应用于一组对象以定义良好但是复杂的方式进行通信的场合,以及想定制一个分布在多个类中的行为,而不是想生成太多的子类的场合。
首先定义一个中介者接口IMediator
public interface IMediator { public void send(String message,Colleague colleague);}
接着定义抽象同事类Colleague
public abstract class Colleague { protected IMediator mediator; public Colleague(IMediator mediator){ this.mediator=mediator; }}
接着定义具体的同事类继承Colleague 抽象同事类
public class ConcreteColleague1 extends Colleague{ public ConcreteColleague1(IMediator mediator) { super(mediator); } public void send(String message){ mediator.send(message, this); } public void notify(String message){ System.out.println("同事1获得消息:"+message); }}public class ConcreteColleague2 extends Colleague{ public ConcreteColleague2(IMediator mediator) { super(mediator); } public void send(String message){ mediator.send(message, this); } public void notify(String message){ System.out.println("同事2获得消息:"+message); }}
然后定义一个具体的中介者对象ConcreteMediator继承IMediator
public class ConcreteMediator implements IMediator{ private ConcreteColleague1 colleague1; private ConcreteColleague2 colleague2; public void setColleague1(ConcreteColleague1 colleague1){ this.colleague1=colleague1; } public ConcreteColleague1 getColleague1(){ return colleague1; } public void setColleague2(ConcreteColleague2 colleague2){ this.colleague2=colleague2; } public ConcreteColleague2 getColleague2(){ return colleague2; } @Override public void send(String message, Colleague colleague) { if(colleague==colleague1){ colleague2.notify(message); } else{ colleague1.notify(message); } }}
客户端代码
public static void main(String[] args) { //中间者模式ConcreteMediator mediator=new ConcreteMediator();ConcreteColleague1 colleague1=new ConcreteColleague1(mediator);ConcreteColleague2 colleague2=new ConcreteColleague2(mediator);mediator.setColleague1(colleague1);mediator.setColleague2(colleague2);colleague1.send("你好,中国");colleague2.send("你好,美国");}
1 0
- 设计模式之Mediator模式(笔记)
- 设计模式--之Mediator模式 笔记
- 设计模式(c++)笔记之十八(Mediator模式)
- 设计模式笔记-Mediator
- 设计模式之Mediator
- 设计模式之 mediator
- 设计模式之mediator模式
- 设计模式之Mediator模式
- 设计模式之Mediator(1)
- 设计模式之Mediator(2)
- 笔记:Gof设计模式--Mediator
- 【设计模式】之十Mediator
- 设计模式学习笔记十七(Mediator中介者模式)
- 设计模式笔记21:中介者模式(Mediator Pattern)
- 设计模式 笔记 中介者模式 Mediator
- 设计模式简单代码之Mediator模式(一)
- 设计模式简单代码之Mediator模式(二)
- 设计模式之(十七)中介者模式(mediator)
- zoj 3818 Pretty Poem
- 【Android】app透明与字体颜色更变、上下文菜单
- Maven入门
- 微信公众号开发加密解密异常java.security.InvalidKeyException:illegal Key Size
- Ajax+PHP+jQuery图片截图上传
- 设计模式之Mediator模式(笔记)
- POJ 1799 Yeehaa!(计算几何)
- Spring Boot报错:This application has no explicit mapping ... a fallback
- Codeforces 456 A. Laptops
- android 语音识别
- win7 64 系统中打开或关闭windows功能空白
- Java - How Classpath works in Java
- BAT内部级别和薪资待遇到底怎样?
- windows下webrtc的编译 2016