mediator-中介模式

本文介绍了解决对象间复杂交互问题的中介者模式。通过租房场景示例,详细阐述了该模式如何简化对象间的依赖关系,并提供了实现代码。适用于消息处理及命令响应等应用场景。

解决问题

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

应用场景

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

原理图

示例

这里就用租房的例子吧

@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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值