解决问题
它解决的是对象之间复杂的交互问题。如果多个对象之间,需要进行某一种或者几种交互,那么可以通过一个中心(中介)来指导交互过程中行为,避免对象之间的复杂依赖关系。比如,生活中常间的租房。房东只需要将房源信息告诉中介,中介就会把信息推送给租房者,而且可以帮助租房者协调租金、签订合同、收取押金、矛盾处理等,避免房东和租房者之间的直接交互。
应用场景
常用在消息处理或者命令响应中。比如聊天室、聊天群。它需要将成员的消息推送给其它成员,一个成员只需要给中介就可以了,不知道一个个周知其它成员,这些动作由中介完成。
原理图
image示例
这里就用租房的例子吧
@AllArgsConstructor
public class Person {
private HouseAgent houseAgent;
public void receive(String message) {
System.out.print("recieved message");
}
// 发布 房源信息
public void sent(String message) {
houseAgent.operate(message);
}
}
public class HouseAgent {
private List<Person> rentSeekers = Lists.newArrayList();
// 每天把新房源通知给组房者
public void operate(String message) {
for (Person person : rentSeekers) {
person.receive(message);
}
}
public void addRentSeeker(Person person) {
rentSeekers.add(person);
}
public static void main(String [] args) {
HouseAgent houseAgent = new HouseAgent();
Person landLoad = new Person(houseAgent);
houseAgent.addRentSeeker(new Person(houseAgent));
houseAgent.addRentSeeker(new Person(houseAgent));
houseAgent.addRentSeeker(new Person(houseAgent));
houseAgent.addRentSeeker(new Person(houseAgent));
houseAgent.addRentSeeker(new Person(houseAgent));
landLoad.sent("我有房子要出租");
}
}
网友评论