设计模式之中介者模式
Mediator(中介者模式)
一、中介者模式简介
中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。
核心:
- 1、用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用
- 2、主要解决对象与对象之间存在大量的关联关系
- 3、将网状结构分离为星型结构
二、中介者模式优缺点比较
优点:
- 1、降低了类的复杂度,将一对多转化成了一对一
- 2、各个类之间的解耦
- 3、符合迪米特原则
缺点:
- 1、中介者庞大,变得复杂难以维护
使用场景:
- 1、MVC框架
- 2、房屋中介、机场调度
注意事项:不应当在职责混乱的时候使用。
三、UML类图

四、设计实现
步骤1:创建部门接口
public interface Department { //内部处理事务 void selfAction(); //外部事物 void outAction(String dname); }
步骤2:创建实现部门接口的具体实现类
//开发部门 public class Development implements Department { //中介者引用 private Mediator m; public Development(Mediator t) { this.m = t; m.register("001", this); } @Override public void selfAction() { System.out.println("001负责产品开发"); } @Override public void outAction(String dname) { System.out.println("001请求资金支持"); m.command(dname); } } //财务部门 public class Financial implements Department{ //中介者引用 private Mediator m; public Financial(Mediator t) { this.m = t; m.register("002", this); } @Override public void selfAction() { System.out.println("002负责拨款"); } @Override public void outAction(String dname) { System.out.println(dname+"收款确认"); m.command(dname); } }
步骤3:创建中介者接口
//中介者 public interface Mediator { //建立联系 void register(String dname,Department d); //协调处理事务 void command(String dname); }
步骤4:创建实现中介接口的实体类
public class President implements Mediator { private Map<String,Department> map = new HashMap<>(); @Override public void register(String dname, Department d) { map.put(dname, d); } @Override public void command(String dname) { map.get(dname).selfAction(); } }
步骤5:调用者测试
public class MediatorDemo { public static void main(String[] args) { Mediator p = new President(); Development d = new Development(p); Financial f = new Financial(p); d.selfAction(); d.outAction("002"); f.selfAction(); f.outAction("001"); } }
步骤6:运行程序,观察结果

posted on 2020-04-08 13:11 VincentYew 阅读(210) 评论(0) 收藏 举报
浙公网安备 33010602011771号