java 之 中介模式(大话设计模式)
中介模式,笔者使用比较多的是在线聊天,或者商家和客户在线沟通,正常我们首先想到的实现方式是
客户→商家;商家→客户,这样的模式就耦合了客户和商家的关系,我们不能够轻易的改动商家或者客户。
而中介模式的出现使得原型变成
客户→平台→商家;商家→平台→客户。这样商家类和客户类就不会耦合在一起。另外如果商家和客户发生冲突。
平台站在中间的立场,可以公平的解决问题
先看下类图
大话设计模式-类图

在简单看下笔者的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);
}
}输出结果:
男:我喜欢你 女:我知道
以上是笔者对中介模式的理解,希望能帮助学习中介模式的小伙伴。