设计模式--中介者模式
来源:互联网 发布:淘宝卖家营销分析 编辑:程序博客网 时间:2024/05/28 16:23
1 中介者模式通过定义一个中介的方式解耦两个对象之间互相的调用。
中介抽象类:
public abstract class AbstractAgency { protected List<AbstractColleague> lstColleague = new ArrayList<AbstractColleague>(); /** * 消息处理方法 * * @param messgae * 消息 * @param colleague * 发送方 */ protected abstract void sendMessage(AbstractColleague colleague, String messgae); /** * 添加可发送同事 * * @param colleague */ protected void addListColleague(AbstractColleague colleague) { lstColleague.add(colleague); }}
具体实现类:
public class ConcreteAgency extends AbstractAgency { /** * 具体来执行发送请求 * * @param colleague * 发送方 * @param messgae * 消息 */ @Override protected void sendMessage(AbstractColleague colleague, String message) { for (AbstractColleague abstractColleague : lstColleague) { System.out.println(abstractColleague.getClass().getName()); if (abstractColleague != colleague) { abstractColleague.receiveMessage(message); } } }}
同事抽象类:
public abstract class AbstractColleague { protected AbstractAgency mediator; public AbstractColleague(AbstractAgency mediator) { super(); this.mediator = mediator; } /** * 接收消息 * * @param message */ protected abstract void receiveMessage(String message); /** * 发送消息 * * @param message */ protected abstract void sendMessage(String message);}
实现类:
public class ConcreteColleague01 extends AbstractColleague { public ConcreteColleague01(AbstractAgency mediator) { super(mediator); } @Override protected void receiveMessage(String message) { System.out.println("Colleague01收到消息:"+message); } @Override protected void sendMessage(String message) { //交给中介去发送給指定的人 mediator.sendMessage(this, message); }}public class ConcreteColleague02 extends AbstractColleague { public ConcreteColleague02(AbstractAgency mediator) { super(mediator); } /** * 接收消息 */ public void receiveMessage(String message) { System.out.println("Colleague02收到消息:" + message); } @Override protected void sendMessage(String message) { System.out.println("Colleague02发送消息:" + message); mediator.sendMessage(this, message); }}
测试:
public class TextMain { public static void main(String[] args) { AbstractAgency agency = new ConcreteAgency(); AbstractColleague colleague01 = new ConcreteColleague01(agency); AbstractColleague colleague02 = new ConcreteColleague02(agency); // 添加要发送的同事 agency.addListColleague(colleague01); agency.addListColleague(colleague02); //发送 colleague01.sendMessage("hello"); }}
常考《大话设计模式》
阅读全文
0 0
- 【设计模式】中介者
- 中介者设计模式
- 设计模式-中介者
- 设计模式-中介者
- [设计]中介者模式
- 设计模式 中介者模式
- 设计模式-中介者模式
- 设计模式 - 中介者模式
- 设计模式-中介者模式
- 设计模式:中介者模式
- 设计模式--中介者模式
- 设计模式-中介者模式
- 设计模式--中介者模式
- 设计模式-中介者模式
- 设计模式-中介者模式
- 设计模式-中介者模式
- 【设计模式】中介者模式
- 设计模式:中介者模式
- 数据库分库分表(sharding)---全局主键生成策略
- [python]反转英文句子
- 关于构造函数和析构函数调用时的多种情况
- Linux守护进程
- Python PIL库 教程
- 设计模式--中介者模式
- ajax返回函数json数据如何取值问题
- 各类识别、深度学习 开源代码及文献梳理
- 照片采集信息 Excel表单处理 VBA
- SLAM学习——建图(二)
- 程序员面试-操作系统-进程
- D.4乱玩数字
- javascript正则表达式
- VSCode 快捷键