解决问题
它解决的是对象之间复杂的交互问题。如果多个对象之间,需要进行某一种或者几种交互,那么可以通过一个中心(中介)来指导交互过程中行为,避免对象之间的复杂依赖关系。比如,生活中常间的租房。房东只需要将房源信息告诉中介,中介就会把信息推送给租房者,而且可以帮助租房者协调租金、签订合同、收取押金、矛盾处理等,避免房东和租房者之间的直接交互。
应用场景
常用在消息处理或者命令响应中。比如聊天室、聊天群。它需要将成员的消息推送给其它成员,一个成员只需要给中介就可以了,不知道一个个周知其它成员,这些动作由中介完成。
原理图
示例
这里就用租房的例子吧
@AllArgsConstructorpublic 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 ListrentSeekers = 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("我有房子要出租"); }}复制代码
参考
https://en.wikipedia.org/wiki/Mediator_pattern