设计模式:中介者模式(Mediator)
歡迎支持筆者新作:《深入理解Kafka:核心設(shè)計與實踐原理》和《RabbitMQ實戰(zhàn)指南》,同時歡迎關(guān)注筆者的微信公眾號:朱小廝的博客。
歡迎跳轉(zhuǎn)到本文的原文鏈接:https://honeypps.com/design_pattern/mediator/
用一個中介對象來封裝一系列的對象交互。中介者使各對象不需要顯示地相互引用,從而使其耦合松散,而且可以獨立地改變他們之間的交互。
中介者模式中的角色:
案例1:
房屋租賃中介就是一個很好的中介模式,租客只知道自己和中介,房東也只知道自己和中介,但是中介必須知道租客和房東。(在我們的生活中處處充斥著“中介者”,比如租房、買房、出過留學、找工作、旅游等可能都需要哪些中介者的幫助。)
1 抽象中介者
2 抽象同事類
public abstract class Person {protected String name;protected Mediator mediator;Person(String name, Mediator mediator){this.name = name;this.mediator = mediator;} }3 具體同事類
房東:
租客:
public class Tenant extends Person {Tenant(String name, Mediator mediator){super(name, mediator);}public void contact(String message){mediator.contact(message, this);}public void getMessage(String message){System.out.println("Tenant : "+name+", Get Message: "+message);} }4 中介
public class MediatorStructure implements Mediator {private HouseOwner houseOwner;private Tenant tenant;public HouseOwner getHouseOwner(){return houseOwner;}public void setHouseOwner(HouseOwner houseOwner){this.houseOwner = houseOwner;}public Tenant getTenant(){return tenant;}public void setTenant(Tenant tenant){this.tenant = tenant;}@Overridepublic void contact(String message, Person person){if(person == houseOwner){tenant.getMessage(message);}else{houseOwner.getMessage(message);}} }5 測試代碼
MediatorStructure mediator = new MediatorStructure();HouseOwner houseOwner = new HouseOwner("qq",mediator);Tenant tenant = new Tenant("jj",mediator);mediator.setHouseOwner(houseOwner);mediator.setTenant(tenant);tenant.contact("I wanna a house");houseOwner.contact("I have~");運行結(jié)果:
HouseOwner : qq, Get Message: I wanna a house Tenant : jj, Get Message: I have~優(yōu)缺點
優(yōu)點
缺點
適用場景
JDK中的中介者模式:
java.util.Timer
java.util.concurrent.Executor#execute()
java.util.concurrent.ExecutorService#submit()
java.lang.reflect.Method#invoke()
參考資料
歡迎跳轉(zhuǎn)到本文的原文鏈接:https://honeypps.com/design_pattern/mediator/
歡迎支持筆者新作:《深入理解Kafka:核心設(shè)計與實踐原理》和《RabbitMQ實戰(zhàn)指南》,同時歡迎關(guān)注筆者的微信公眾號:朱小廝的博客。
總結(jié)
以上是生活随笔為你收集整理的设计模式:中介者模式(Mediator)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计模式:迭代器模式(Iterator)
- 下一篇: Memcached安装与配置