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