mediator-中介模式

作者: oneWeekOneTopic | 来源:发表于2018-06-08 10:42 被阅读4次

解决问题

它解决的是对象之间复杂的交互问题。如果多个对象之间,需要进行某一种或者几种交互,那么可以通过一个中心(中介)来指导交互过程中行为,避免对象之间的复杂依赖关系。比如,生活中常间的租房。房东只需要将房源信息告诉中介,中介就会把信息推送给租房者,而且可以帮助租房者协调租金、签订合同、收取押金、矛盾处理等,避免房东和租房者之间的直接交互。

应用场景

常用在消息处理或者命令响应中。比如聊天室、聊天群。它需要将成员的消息推送给其它成员,一个成员只需要给中介就可以了,不知道一个个周知其它成员,这些动作由中介完成。

原理图

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("我有房子要出租");
    }
}

参考

https://en.wikipedia.org/wiki/Mediator_pattern

相关文章

网友评论

    本文标题:mediator-中介模式

    本文链接:https://www.haomeiwen.com/subject/debosftx.html