设计模式:中介模式
2019-01-21 02:38:40来源:博客园 阅读 ()
中介这个词语在现实生活中很常见,我们买房租房找中介,通过中介完成买卖房屋,买房和卖方直接和中介交流,完成交易合同。
房产中介,第三方平台,支付宝这些等都属于中介。他们在中间从当一个中间人的作用,承担交易双方的业务流程。
核心:中介者对象,该对象使一些复杂的业务处理简化,使各业务处理对象直接和中介者打交道。
例子:模拟公司业务处理。总经理充当中介者角色,负责协调各部门。
/** * 中介者抽象接口 */ public interface Mediator { //管理对象 void register(String name, Department departMent); //调用对象 void command(String something); }
/** * 部门内部对象接口 */ public interface Department { //完成部门任务 void doSomeThing(); //向中介者汇报,通知中介者调用 void apply(); }
public class FinacialDepartment implements Department { //持有中介者对象 private Mediator mediator; public FinacialDepartment(Mediator mediator) { this.mediator = mediator; mediator.register("finacial", this); } @Override public void doSomeThing() { System.out.println("财务部门工作"); } @Override public void apply() { System.out.println("财务汇报工作"); } }
/** * 研发部门 */ public class Development implements Department { //持有中介者对象 private Mediator mediator; public Development(Mediator mediator) { this.mediator = mediator; mediator.register("development", this); } @Override public void doSomeThing() { System.out.println("研发部门工作"); } @Override public void apply() { System.out.println("研发部门汇报工作需要财务部门支持。"); //通知中介者,调用其他对象方法 mediator.command("finacial"); } }
/** * 具体中介者 */ public class Manager implements Mediator { private Map<String, Department> map = new HashMap<>(); @Override public void register(String name, Department departMent) { map.put(name, departMent); } @Override public void command(String something) { map.get(something).doSomeThing(); } }
public class Client { public static void main(String[] args) { //中介者 Mediator manager = new Manager(); //各部门对象,中介者需要对接到具体对象 Department devop = new Development(manager); Department finaical = new FinacialDepartment(manager); devop.doSomeThing(); //通过向中介者发出申请,间接完成具体对象的调用 devop.apply(); } }
这个简单例子中,通过中介者Manager使各部门交互关系解耦,每个对象持有中介者对象引用,只跟中介者对象打交道。
简化了对象之间的关系,将系统的各个对象之间的相互关系进行封装,将各个同事类解耦,使得系统变为松耦合。
当在业务处理中需要协调多个对象的关系,而又不需要去增加子类方法处理时可以考虑该模式。
原文链接:https://www.cnblogs.com/gcm688/p/10279356.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 设计模式-委派/策略模式 2020-06-09
- 深入理解:设计模式中的七大设计原则 2020-06-07
- 设计模式---类之间的关系知多少 2020-06-07
- 你与面试官所了解的单例模式并不一样! 2020-06-06
- 高手眼中的观察者模式有什么不一样 2020-06-05
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash