中介模式,笔者使用比较多的是在线聊天,或者商家和客户在线沟通,正常我们首先想到的实现方式是
客户→商家;商家→客户,这样的模式就耦合了客户和商家的关系,我们不能够轻易的改动商家或者客户。
而中介模式的出现使得原型变成
客户→平台→商家;商家→平台→客户。这样商家类和客户类就不会耦合在一起。另外如果商家和客户发生冲突。
平台站在中间的立场,可以公平的解决问题
先看下类图
大话设计模式-类图
在简单看下笔者的demo
/** * 抽象父类人 */ public abstract class Person { private IMatchmaker matchmaker; public Person(IMatchmaker matchmaker) { this.matchmaker = matchmaker; } public void sendMessage(String message, Person person) { matchmaker.handleMessage(message, person); } public void receiveMessage(String message) { System.out.println(message); } }
/** * 中介接口 */ public interface IMatchmaker { public void handleMessage(String message, Person person); }
/** * 男孩 */ public class Boy extends Person{ public Boy(IMatchmaker matchmaker) { super(matchmaker); } }
/** * 女孩 */ public class Girl extends Person{ public Girl(IMatchmaker matchmaker) { super(matchmaker); } }
/** * 具体媒婆 */ public class WomanMatchmaker implements IMatchmaker{ private Person person1; private Person person2; @Override public void handleMessage(String message, Person person) { if (person1.equals(person)) { person2.receiveMessage(message); } else { person1.receiveMessage(message); } } public Person getPerson1() { return person1; } public void setPerson1(Person person1) { this.person1 = person1; } public Person getPerson2() { return person2; } public void setPerson2(Person person2) { this.person2 = person2; } }
/** * 客户端 */ public class Test { public static void main(String[] args) { WomanMatchmaker matchmaker = new WomanMatchmaker(); Person person1 = new Boy(matchmaker); Person person2 = new Girl(matchmaker); matchmaker.setPerson1(person1); matchmaker.setPerson2(person2); person1.sendMessage("男:我喜欢你", person1); person2.sendMessage("女:我知道", person2); } }
输出结果:
男:我喜欢你
女:我知道
以上是笔者对中介模式的理解,希望能帮助学习中介模式的小伙伴。