设计模式中介者模式(MediatorPattern)
2018-01-03 18:32
134 查看
核心模块:抽象中介者、具体中介者、抽象同事类、具体同事类
所有代码请访问:git@code.aliyun.com:289804201/PatternLearn.git
使用场景:双方不直接交流的情况下,进行通信(调用等);
优点:降低耦合性,不需要显示的调用对象,减少系统对象之间的耦合;
缺点:关系过于复杂的话,中介类将异常庞大;
注意:
1,不同于访问者模式,访问者模式有具体的数据元,且访问模式数据元可扩展;
内容打印
Hello World!
HouseOwner,jay receive:hello
Tenant,tory receive:do you need house?
HouseOwner,jay receive:yes,i do!!
所有代码请访问:git@code.aliyun.com:289804201/PatternLearn.git
使用场景:双方不直接交流的情况下,进行通信(调用等);
优点:降低耦合性,不需要显示的调用对象,减少系统对象之间的耦合;
缺点:关系过于复杂的话,中介类将异常庞大;
注意:
1,不同于访问者模式,访问者模式有具体的数据元,且访问模式数据元可扩展;
/** * Created by tory on 2017/12/11. * //中介者模式, * 适合两人之间单独联系;不适合群聊 * 不同与访问者模式,访问者模式有固定的数据元或者流程, * 优点,解耦,减少子类:缺点,中介者过于庞大 */ public class MediatorPattern { public static void main(String[] args) { HouseMediator mediator = new HouseMediator(); TenantPerson tenant = new TenantPerson("tory",mediator); HousePerson owner = new HousePerson("jay",mediator); mediator.setHouseowner(owner); mediator.setTenant(tenant); tenant.contact("hello"); owner.contact("do you need house?"); tenant.contact("yes,i do!!"); } } //Meditor 抽象中介者 abstract class Mediator { abstract void contact(String message, Person person); } //ConcreteMediator 具体中介者 class HouseMediator extends Mediator { //中介者要知道通信的双方,如果关系过大,比如群聊,或者散发性网络,中介者将异常庞大 TenantPerson tenant; HousePerson houseowner; public void setTenant(TenantPerson tenant) { this.tenant = tenant; } public void setHouseowner(HousePerson houseowner) { this.houseowner = houseowner; } @Override void contact(String message, Person person) { //这里实现opc, //person 发送者Person 发送的message if (person == tenant) { houseowner.getMessage(message); } else if (houseowner == person) { tenant.getMessage(message); } } //房屋中介 } //Colleague 抽象同事类 abstract class Person { String name; Mediator mediator; Person(String name, Mediator mediator) { this.name = name; this.mediator = mediator; } } //ConcreteColleague 具体同事类 class TenantPerson extends Person { //承租人 TenantPerson(String name, Mediator mediator) { super(name, mediator); } void contact(String message) { mediator.contact(message, this); } void getMessage(String message) { System.out.println("Tenant," + name + " receive:" + message); } } class HousePerson extends Person { //房东 HousePerson(String name, Mediator mediator) { super(name, mediator); } void contact(String message) { mediator.contact(message, this); } void getMessage(String message) { System.out.println("HouseOwner," + name + " receive:" + message); } }
内容打印
Hello World!
HouseOwner,jay receive:hello
Tenant,tory receive:do you need house?
HouseOwner,jay receive:yes,i do!!
相关文章推荐
- Net设计模式实例之中介者模式(Mediator Pattern)(1) 推荐
- 设计模式学习笔记--中介者模式Mediator pattern(Java版)
- 中介者模式(Mediator Pattern)
- 中介者模式(Mediator Pattern)
- 设计模式 -- 中介者设计模式 (Mediator Pattern)
- 二十.行为型设计模式——Mediator Pattern(中介者模式)
- Net设计模式实例之中介者模式(Mediator Pattern)(2)
- JAVA设计模式之 中介者模式【Mediator Pattern】
- 中介者模式(Mediator Pattern)。
- 二十四种设计模式:中介者模式(Mediator Pattern)
- 18.中介者模式(Mediator Pattern)
- 设计模式总结之Mediator Pattern(中介者模式)
- 中介者模式(Mediator Pattern)
- 极速理解设计模式系列:15.中介者模式(Mediator Pattern)
- C#设计模式(18)——中介者模式(Mediator Pattern)
- Java中介者模式(Mediator Pattern)
- Mediator Pattern --中介者模式原理及实现(C++)
- 十一个行为型模式5:中介者模式-Mediator Pattern【学习难度:★★★☆☆,使用频率:★★☆☆☆】
- 中介者模式(Mediator Pattern)
- 中介者模式 Mediator Pattern