设计模式十四(中介者模式)
中介者模式:如果一个系统中对象之间的联系呈现网状结构,对象之间存在大量多对多关系,将导致关系及其复杂,这些对象称为同事对象。我们可以引入一个中介者对象,使各个同事对象只跟中介者对象打交道,将复杂的网络结构化解为星形结构。
中介者模式的本质:解耦多个同事对象之间的交互关系,每个对象都持有中介者对象的引用,只跟中介者对象打交道。通过中介者对象统一管理这些交互关系。
代码实现:
如果两个对象需要使用对方类中的方法,可以通过中介者来调用,实现同事对象中的解耦
中介者类
public interface Mediator {void register(String dname,Department d);void command(String dname);
}
class RealMediator implements Mediator {private Map<String,Department> map = new HashMap<String , Department>();public void command(String dname) {map.get(dname).selfAction();}public void register(String dname, Department d) {map.put(dname, d);}
}
两个同事对象,A,B
public interface Colleague {void selfAction(); void outAction();
}
class A implements Colleague {private Mediator m; public A(Mediator m) {this.m = m;m.register("A", this);}public void outAction() {m.command("B"); }public void selfAction() {System.out.println("A中的方法");}
}
class B implements Colleague {private Mediator m; public B(Mediator m) {this.m = m;m.register("B", this);}public void outAction() {m.command("A");}public void selfAction() {System.out.println("B中的放法");}
}
调用测试
public class Client {public static void main(String[] args) {Mediator mediator = new RealMediator();A a = new A(mediator);B b = new B(mediator);b.outAction();a.outAction();}
}
设计模式十四(中介者模式)相关推荐
- 设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型)
设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型) 1.概述 类中的面向对象编程封装应用逻辑.类,就是实例化的对象,每个单独的对象都有一个特定的身份和状态.单独的对象是一种组织代码的有用 ...
- (十四)桥接模式详解(都市异能版) - 转
作者:zuoxiaolong8810(左潇龙),转载请注明出处. 魔都国贸附近,某天夜里十一点半. 那一晚,魔都出奇的没有做只打雷不下雨的勾当,老天似乎是要将魔都淹没一般,倾盆大雨像不要命似的拍打着地 ...
- 设计模式(四)--代理模式
设计模式(四)–代理模式 文章目录 设计模式(四)--代理模式 其他链接 代理模式 1.简介 2.静态代理 角色 代码实现 好处 3.动态代理 代码实现 解析 其他链接 JVM学习笔记(一) JVM学 ...
- 肝一肝设计模式【四】-- 建造者模式
系列文章目录 肝一肝设计模式[一]-- 单例模式 传送门 肝一肝设计模式[二]-- 工厂模式 传送门 肝一肝设计模式[三]-- 原型模式 传送门 肝一肝设计模式[四]-- 建造者模式 传送门 肝一肝设 ...
- 设计模式十二之组合模式
设计模式十二之组合模式 1. 模式的定义与特点 1.1 模式的定义 1.2 模式的特点 1.3 模式的使用场景 2. 模式的结构与实现 2.1 模式的结构 2.2 模式的实现 3. 模式在开源软件中的 ...
- 设计模式(四)——原型模式详解
设计模式(四)--原型模式详解 定义 结构 实现 案例 浅克隆 深克隆 定义 原型模式就是用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的对象. 结构 原型模式包含以下角色: ...
- 【大话设计模式】模式十:中介者模式
[引入] 国与国之间的关系,类似于对象与对象之间的关系,这就要求对象之间需要知道其他所有对象.但是对象之间大量的链接使得一个对象不可能在没有其他对象支持下工作,系统表现为一个不可分割的整体,降低其可复 ...
- C#设计模式之十七中介者模式(Mediator Pattern)【行为型】
一.引言 今天我们开始讲"行为型"设计模式的第五个模式,该模式是[中介者模式],英文名称是:Mediator Pattern.还是老套路,先从名字上来看看."中介者模式& ...
- 《研磨设计模式》chap10 中介者模式Mediator(1)简介
1. 使用场景 如果电脑没有主板,各个配件的关系为 有主板后: 2. 中介者模式简介:各对象通过中介者来交互 //Mediator.java public interface Mediator { p ...
最新文章
- C语言写的俄罗斯方块
- python标准库的基本使用
- UNIX环境C - 系统信号
- 【SICP练习】101 练习2.77-2.78
- office2010删除分页符
- php基础小结,PHP基础学习小结
- oracle 执行带参数的sql语句_当用EXECUTE IMMEDIATE执行SQL语句中的参数个数也是动态的?用什么方法实现?...
- [css] 用css给一个元素加边框有哪些方法?
- Oracle毙掉JavaOne
- CSDN 请勿使用默认标题 解决方案
- Wget 命令用法详解
- Tomcat5的数据库连接池配置
- centos mysql5.5 编译安装_centos6.4下编译安装MySQL-5.5.33
- oeasy教您玩转linux-010110内容回顾
- java——API——ArrayList集合
- pyppeteer 报 Execution context was destroyed, most likely because of a navigation
- JS前端调用TSC打印二维码、条码
- JVM crash 异常分析
- 第二次Rosetta stone学习总结
- setTimeout 导致的浏览器假死
热门文章
- android 2k屏分辨率,2K、4K、8K分辨率屏幕有用吗?看看它们怎么说!
- 25. Green Living 绿色生活
- 酷派手机(Coolpad 8297-T01)在Android开发工具如AndroidStudio、Eclipse中无法打印Log
- krnln.fnr和shell.fne_电脑开机显示failedtoloadkernllibrary什么意思啊
- H3C MSR3020路由NQA实例配置
- 案例07:金字塔+纹理
- Python使用Pandas计算相关系数
- JQuery中 JSON 兼容性问题(针对ie8)
- Introduction to the Peer-to-Peer Sockets Project
- U68464 滑稽树上滑稽果(guo)