JAVA开发的23种设计模式之 --- 中介者模式
来源:互联网 发布:订单管理系统java流程 编辑:程序博客网 时间:2024/06/05 09:44
中介者模式
- 概述 : 用一个中介对象来封装一系列的对象交互.中介者使各对象不需要显式的相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互
- 中介者模式所包含的角色
- Mediator : 中介者角色.在里面定义各个部门之间的交互对象,
- ConcreteMediator : 具体中介者实现角色.维护各个部门之间的交互关系
- Deparement : 部门角色.所有具体部门类的父类.
- ConreteDepaerment : 具体部门角色.实现与中介者角色的交互.从而实现与其他部门的交互
- 使用场景
- 系统中对象之间存在比较复杂的引用关系,导致他们之间的依赖关系结构混乱而已难以复用
- 想通过一个中间类来封装多个类中的行为,而又不想生成太多的子类
- 优点
- 降低了类的复杂度,将一对多的关系转化成了一对一(具体部门角色对中介者)
- 各个类之间实现解耦
- 符合迪米特原则
- 缺点
- 如果部门很多的话,中介类会非常庞大,难以维护
代码实现
示例:一个公司,各个部门之间可能需要经常交互,这样非常的错综复杂.现在使用中介者模式来简单实现产品部门和研发部门的交互.现在产品部门通常要时刻了解研发部门的开发进度,所以两个部门需要经常进行联系.
抽象中介者角色
package Mediator;/** * Created by looper on 2017/8/28. */public abstract class Mediator { public abstract void contact(Department department,String message);}具体中介者角色
package Mediator;/** * Created by looper on 2017/8/28. */public class ConcreteMediator extends Mediator { protected ResearchDepartment researchDepartment; protected ProductDepartment productDepartment; public ResearchDepartment getResearchDepartment() { return researchDepartment; } public void setResearchDepartment(ResearchDepartment researchDepartment) { this.researchDepartment = researchDepartment; } public ProductDepartment getProductDepartment() { return productDepartment; } public void setProductDepartment(ProductDepartment productDepartment) { this.productDepartment = productDepartment; } @Override public void contact(Department department, String message) { if ("研发部".equals(department.getName())) { productDepartment.getMessage(message); } else if ("产品部".equals(department.getName())) { researchDepartment.getMessage(message); } }}部门角色类
package Mediator;/** * Created by looper on 2017/8/28. */public abstract class Department { private String name; protected Mediator mediator; public Department(String name, Mediator mediator){ this.name = name; this.mediator = mediator; } public String getName() { return name; } public void setName(String name) { this.name = name; } //接收其他部门的消息 public abstract void getMessage(String message);}具体部门角色1(产品部)
package Mediator;/** * Created by looper on 2017/8/28. */public class ProductDepartment extends Department { public ProductDepartment(String name, Mediator mediator) { super(name, mediator); } //接收其他部门的消息 @Override public void getMessage(String message) { System.out.println("产品部刚刚收到消息 : "+message); } //向其他部门发送信息 public void sendMessage(ProductDepartment productDepartment,String message) { mediator.contact(productDepartment,message); }}具体部门角色2(研发部)
package Mediator;/** * Created by looper on 2017/8/28. */public class ResearchDepartment extends Department { public ResearchDepartment(String name, Mediator mediator) { super(name, mediator); } //接受其他部门的消息 @Override public void getMessage(String message) { System.out.println("研发部刚刚收到消息 : "+message); } //向其他部门发送消息 public void sendMessage(ResearchDepartment researchDepartment, String message) { mediator.contact(researchDepartment,message); }}测试类
package Mediator;/** * Created by looper on 2017/8/28. */public class MediatorTest { public static void main(String[] args) { ConcreteMediator mediator = new ConcreteMediator(); ProductDepartment productDepartment = new ProductDepartment("产品部",mediator); ResearchDepartment researchDepartment = new ResearchDepartment("研发部",mediator); mediator.setProductDepartment(productDepartment); mediator.setResearchDepartment(researchDepartment); productDepartment.sendMessage(productDepartment,"我是产品部,需要研发部提供具体的开发日程"); researchDepartment.sendMessage(researchDepartment,"我的研发部,最新的开发日程已经发送到你们,请注意查收"); }}
我将23种设计模式的代码上传到CSDN,有用得到的同学 可以去下载.
下载地址 : 点我
阅读全文
0 0
- JAVA开发的23种设计模式之 --- 中介者模式
- Java开发中的23种设计模式之二十二:中介者模式(Mediator)
- JAVA的23种设计模式---中介者模式
- JAVA-设计模式之中介者模式
- java设计模式之中介者模式
- Java 设计模式之中介者模式
- Java 设计模式之中介者模式
- Java 设计模式之中介者模式
- java设计模式之中介者模式
- Java设计模式之中介者模式
- java设计模式之中介者模式
- java设计模式之中介者模式
- Java设计模式之中介者模式
- java设计模式之中介者模式
- JAVA设计模式之中介者模式
- Java设计模式之中介者模式
- Java设计模式之中介者模式
- Java 设计模式之中介者模式
- wait和waitpid详解
- 欢迎使用CSDN-markdown编辑器
- C语言逐行读取文件
- web编程非常实用的在线工具大全
- 解决归档出错,ORA-00257: archiver error. Connect internal only, until freed.
- JAVA开发的23种设计模式之 --- 中介者模式
- PHP 计算两个时间段之间交集的天数
- 联发科正式发布Helio P23/P30 SoC:GPU、基带大升级
- HDU
- TP3.2 Join和where一起使用的问题
- 一次项目实战 mysql 1000万 数据优化、系统cpu 99% 内存 88%
- springMVC:HTTP Status 405
- 考研英语——考试中出现的常见词的不常见意思
- IOS10后上传构建版本itunes connect中无法显示问题