赞
踩
概念:也称为调停者模式。用一个中介者对象封装一系列对象的交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
以下用一个同事之间沟通的例子来帮助大家理解。
- public interface Mediator {
- void changed(Colleague colleague);
- void register(Colleague colleague);
- }
-
- public interface Colleague {
- void send(String message);
- void receive(String message);
- }
-
- public class ConcreteMediator implements Mediator {
- private List<Colleague> colleagues = new ArrayList<>();
- public void register(Colleague colleague) {
- colleagues.add(colleague);
- }
- @Override
- public void changed(Colleague colleague) {
- // 假设每个同事收到消息后都向所有其他同事发送消息
- for (Colleague c : colleagues) {
- if (!c.equals(colleague)) {
- c.receive("Message from " + colleague.getClass().getSimpleName());
- }
- }
- }
- }
-
- public class ConcreteColleagueA implements Colleague {
- private Mediator mediator;
- public ConcreteColleagueA(Mediator mediator) {
- this.mediator = mediator;
- mediator.register(this);
- }
- @Override
- public void send(String message) {
- System.out.println("Colleague A sends: " + message);
- mediator.changed(this);
- }
- @Override
- public void receive(String message) {
- System.out.println("Colleague A receives: " + message);
- }
- }
-
- public class ConcreteColleagueB implements Colleague {
- private Mediator mediator;
- public ConcreteColleagueB(Mediator mediator) {
- this.mediator = mediator;
- mediator.register(this);
- }
- @Override
- public void send(String message) {
- System.out.println("Colleague B sends: " + message);
- mediator.changed(this);
- }
- @Override
- public void receive(String message) {
- System.out.println("Colleague B receives: " + message);
- }
- }
-
- public class Demo {
- public static void main(String[] args) {
- ConcreteMediator mediator = new ConcreteMediator();
- Colleague colleagueA = new ConcreteColleagueA(mediator);
- Colleague colleagueB = new ConcreteColleagueB(mediator);
- colleagueA.send("Hello from A");
- colleagueB.send("Hello from B");
- }
- }

如果大家需要视频版本的讲解,欢迎关注我的B站:
【天哥不爱学习的个人空间-哔哩哔哩】 https://b23.tv/HxwqjXl
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。