设计模式:中介者模式(Mediator)
歡迎支持筆者新作:《深入理解Kafka:核心設(shè)計(jì)與實(shí)踐原理》和《RabbitMQ實(shí)戰(zhàn)指南》,同時(shí)歡迎關(guān)注筆者的微信公眾號(hào):朱小廝的博客。
歡迎跳轉(zhuǎn)到本文的原文鏈接:https://honeypps.com/design_pattern/mediator/
用一個(gè)中介對(duì)象來(lái)封裝一系列的對(duì)象交互。中介者使各對(duì)象不需要顯示地相互引用,從而使其耦合松散,而且可以獨(dú)立地改變他們之間的交互。
中介者模式中的角色:
案例1:
房屋租賃中介就是一個(gè)很好的中介模式,租客只知道自己和中介,房東也只知道自己和中介,但是中介必須知道租客和房東。(在我們的生活中處處充斥著“中介者”,比如租房、買(mǎi)房、出過(guò)留學(xué)、找工作、旅游等可能都需要哪些中介者的幫助。)
1 抽象中介者
2 抽象同事類(lèi)
public abstract class Person {protected String name;protected Mediator mediator;Person(String name, Mediator mediator){this.name = name;this.mediator = mediator;} }3 具體同事類(lèi)
房東:
租客:
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 測(cè)試代碼
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~");運(yùn)行結(jié)果:
HouseOwner : qq, Get Message: I wanna a house Tenant : jj, Get Message: I have~優(yōu)缺點(diǎn)
優(yōu)點(diǎn)
缺點(diǎn)
適用場(chǎng)景
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è)計(jì)與實(shí)踐原理》和《RabbitMQ實(shí)戰(zhàn)指南》,同時(shí)歡迎關(guān)注筆者的微信公眾號(hào):朱小廝的博客。
總結(jié)
以上是生活随笔為你收集整理的设计模式:中介者模式(Mediator)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 设计模式:迭代器模式(Iterator)
- 下一篇: Memcached安装与配置