Java设计模式--调停者模式Mediator
来源:互联网 发布:云计算logo 编辑:程序博客网 时间:2024/05/16 07:22
调停者模式
场景:
一个系统内部通过许多的类互相之间相互调用来完成一系列的功能,这个系统内部的每个类都会存在至少一次的调用与被调用,多者数不胜数,这种情况下,一旦某个类发生问题,进行修改,无疑会影响到所有调用它的类,甚至它调用的类,可见这种情况下,类与类之间的耦合性极高。
应用:
调停者犹如第三方中介一般,将所有的类与类之间的引用都导向调停者类,所有类的请求,一致发向调停者,由调停者再发向目标类,这样原本复杂的网状的类关系,变成了简单的星型类关系,调停者类位于核心,所有其他类位于外围,指向调停者。如此这般,类与类之间的直接调用耦合被解除(通过统一的第三方来发起调用),某个类发生问题,发生修改,也只会影响调停者,而不会直接影响到简介发起调用的那些类。
调停者模式和单例模式相似都是几种职责,但是调停者模式是针对一组特殊的对象,而不是系统全部的对象。
调停者模式的意图是定义一个对象,封装一组对象的交互,从而降低对象间的耦合度,避免了对象间的显式引用,并且可以独立改变对象的行为。
package website.dengta.mediator;/** * 调停者接口,相当于是中介 */public interface Mediator { void Change(String message, Person one, String name);}
package website.dengta.mediator;/** * @author www.dengta.website * @date 2017-10-25 23:17 */public class TrueMediator implements Mediator { @Override public void Change(String message, Person one, String name) { System.out.println("经理收到"+name+"的需求:"+message); System.out.println("经理将"+name+"的需求发送给了目标职员One"); one.calledByMediator(message,name); }}
package website.dengta.mediator;/** * @author www.dengta.website * @date 2017-10-25 23:12 */public abstract class Person { String name; private Mediator mediator;//请求中介者 public Person(String name, Mediator mediator) { this.name = name; this.mediator = mediator; } //被调停者调用的方法 public void calledByMediator(String message,String nname){ System.out.println(name+"接收到来自"+nname+"的需求:"+message); } //调用调停者 public void call(String message, Person one, String nname){ System.out.println(nname+"发起了需求:"+message); mediator.Change(message,one,name); }}
package website.dengta.mediator;/** * @author www.dengta.website * @date 2017-10-25 23:22 */public class TruePersonOne extends Person { public TruePersonOne(String name, Mediator mediator) { super(name, mediator); }}
package website.dengta.mediator;/** * @author www.dengta.website * @date 2017-10-25 23:23 */public class TruePersonTwo extends Person { public TruePersonTwo(String name, Mediator mediator) { super(name, mediator); }}
package website.dengta.mediator;/** * @author www.dengta.website * @date 2017-10-25 23:23 */public class TestMediator { public static void main(String[] args) { //分配职员和经理 Mediator jingli = new TrueMediator(); TruePersonOne one = new TruePersonOne("职员One",jingli); TruePersonTwo two = new TruePersonTwo("职员Two",jingli); //职员One的需求 String messageOne = "这些代码应该由Two来码。"; one.call(messageOne,two,two.name); //职员Two的请求 String messageTwo = "这不是我负责的"; two.call(messageTwo,one,one.name); }}
最后打印:
职员Two发起了需求:这些代码应该由Two来码。经理收到职员One的需求:这些代码应该由Two来码。经理将职员One的需求发送给了目标职员One职员Two接收到来自职员One的需求:这些代码应该由Two来码。职员One发起了需求:这不是我负责的经理收到职员Two的需求:这不是我负责的经理将职员Two的需求发送给了目标职员One职员One接收到来自职员Two的需求:这不是我负责的
阅读全文
0 0
- Java设计模式--调停者模式Mediator
- Java调停者模式(Mediator)
- Java设计模式——调停者模式(Mediator)
- 【Java设计模式】· 调停者模式(Mediator Pattern)
- 《Java设计模式》之调停者模式(Mediator)
- 调停者模式(Mediator)
- 调停者模式Mediator
- 调停者模式(Mediator)
- mediator模式-调停者模式
- 调停者(mediator)模式
- 调停者模式mediator 笔记
- 调停者模式(Mediator)
- java设计模式---调停者模式
- java设计模式---调停者模式
- java设计模式笔记:调停者模式
- java 设计模式 调停者模式
- 设计模式初探-中介者模式(MEDIATOR)又称调停者模式
- 设计模式:调停者模式
- Java_Ant详解
- 技术大牛养成指南,一篇不鸡汤的成功学实践
- 解析URL参数为对象
- C++11 学习笔记 lambda表达式
- servlet中的两个init方法
- Java设计模式--调停者模式Mediator
- 公钥密码学与RSA
- index by 在Oracle中的应用
- Android Studio3.0使用Gradle可能遇见的问题
- Android Audio音量设置流程
- Git与Github建立密钥
- java 使用jdbc连接Greenplum数据库
- 正则表达式入门
- chapter21 Java多线程编程在Netty中的应用