[设计模式-行为型]中介者模式(Mediator)
一句话
又翻译成调停者模式。
就是类似房产中介, 买房、卖方不需要双方直接交涉,交给中介。
概括
解析
MEDIATOR—四个MM打麻将,相互之间谁应该给谁多少钱算不清楚了,幸亏当时我在旁边,按照各自的筹码数算钱,赚了钱的从我这里拿,赔了钱的也付给我,一切就OK啦,俺得到了四个MM的电话。
调停者模式:调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显作用。从而使他们可以松散偶合。当某些对象之间的作用发生改变时,不会立即影响其他的一些对象之间的作用。保证这些作用可以彼此独立的变化。调停者模式将多对多的相互作用转化为一对多的相互作用。调停者模式将对象的行为和协作抽象化,把对象在小尺度的行为上与其他对象的相互作用分开处理。
实例
举一个房产交易的例子,现在二手房市场上超过5年的房子进行交易就不需要缴纳房产税了。
包含的类文件:
一个中介的接口 (Mediator.java)
一个中介的实现类:(MediatorImpl.java)
一个房主的接口 (HouseOwner.java)
两类房主的类 (HouseOwnerA.java, HouseOwnerB.java)
测试主类: (TestMain.java)
/** * @author oscar999 * @date 2015-1-6* @version V1.0 */
package designptn.mediator;public abstract class Mediator {public abstract void sellHouse(String houseType);
}
/** * @author oscar999 * @date 2015-1-6* @version V1.0 */
package designptn.mediator;/*** @author Administrator**/
public class MediatorImpl extends Mediator {private HouseOwnerA ha;private HouseOwnerB hb;public MediatorImpl(){ha = new HouseOwnerA();hb = new HouseOwnerB();}@Overridepublic void sellHouse(String houseType) {// TODO Auto-generated method stubif(houseType.equals("typeA")){ha.sell();}else if(houseType.equals("typeB")){hb.sell();}}}
/** * @author oscar999 * @date 2015-1-6* @version V1.0 */
package designptn.mediator;/*** @author Administrator* */
public abstract class HouseOwner {public abstract void sell() ;}
/** * @author oscar999 * @date 2015-1-6* @version V1.0 */
package designptn.mediator;/*** @author Administrator* */
public class HouseOwnerA extends HouseOwner {@Overridepublic void sell() {// TODO Auto-generated method stubSystem.out.println("Sell house with Tax");}}
/** * @author oscar999 * @date 2015-1-6* @version V1.0 */
package designptn.mediator;/*** @author Administrator**/
public class HouseOwnerB extends HouseOwner {@Overridepublic void sell() {// TODO Auto-generated method stubSystem.out.println("Sell house without Tax");}}
/** * @author oscar999 * @date 2015-1-6* @version V1.0 */
package designptn.mediator;/*** @author Administrator**/
public class TestMain {public static void main(String[] args) {// TODO Auto-generated method stubMediator mediator = new MediatorImpl();mediator.sellHouse("typeA");mediator.sellHouse("typeB");}}
[设计模式-行为型]中介者模式(Mediator)相关推荐
- 【设计模式-行为型-中介者模式(Mediator)】
概述 用一个中介对象来封装一系列的对象交互.中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互. 适用性 1.一组对象以定义良好但是复杂的方式进行通信.产生 ...
- 设计模式(10):行为型-中介者模式(Mediator)
设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于 ...
- 《研磨设计模式》chap10 中介者模式Mediator(1)简介
1. 使用场景 如果电脑没有主板,各个配件的关系为 有主板后: 2. 中介者模式简介:各对象通过中介者来交互 //Mediator.java public interface Mediator { p ...
- java mediator_《JAVA设计模式》之中介者模式(Mediator)
在阎宏博士的<JAVA与模式>一书中开头是这样描述调停者(Mediator)模式的: 调停者模式是对象的行为模式.调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显引用.从 ...
- 《研磨设计模式》chap10 中介者模式Mediator(2)应用举例
人员类和部门类之间的关系:删除一个人或一个部门时,需要同时删除人员类和部门类里的数据,增加操作也是如此. public class User{ private String userId; //用户编 ...
- 乐在其中设计模式(C#) - 中介者模式(Mediator Pattern)
[索引页] [源码下载] 乐在其中设计模式(C#) - 中介者模式(Mediator Pattern) 作者:webabcd 介绍 用一个中介对象来封装一系列的对象交互.中介者使各对象不需要显式地相互 ...
- PHP设计模式之中介者模式(Mediator Pattern)了解下
咱们先来看下中介者模式(Mediator Pattern)的定义,它就是,用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互, ...
- 设计模式.中介者模式Mediator
定义 中介者模式(Mediator pattern) : 使用中介者模式来集中相关对象之间复杂的沟通和控制方式,使得这些对象不必相互明显引用.从而使它们可以较松散地耦合.当这些对象中的某些对象之间的相 ...
- 设计模式-中介者模式(Mediator Pattern)
设计模式-中介者模式(Mediator Pattern) 文章目录 设计模式-中介者模式(Mediator Pattern) 一.定义 二.概念解释 三.场景 四.实现 1.类图 2.代码实现 五.总 ...
最新文章
- 零基础参加软件测试培训需要学多长时间
- python-冒泡排序
- 新手学测试----Unit Test(单元测试)
- 任意文件上传mysql_BigDump 跨站脚本、SQL注入、任意文件上传漏洞
- 曝!BAT大厂NLP学习进阶之法~
- HDU1520 Anniversary party 树形动态规划
- 各种模板(数据结构图论)
- Linux系统登录相关(命令,应急响应可以用到)
- UE3 预计算可见性
- List列表的万能的适配器
- 微信支付服务器验证的java_Java中的微信支付(3):API V3对微信服务器响应进行签名验证...
- 我们究竟需要什么!!?
- python——redis
- git 公钥提交代码_Git自由之章 - 关于SSH 公钥
- c语言编译器苹果下载,c语言编译器ios下载
- 联发科MT6763芯片设计,MT6763参考设计,MT6763处理器资料
- 信噪比(dB)换算公式
- 【图像去模糊】SDWNet: A Straight Dilated Network with Wavelet Transformation for image Deblurring
- 测试同学反馈,java 程序内存泄露,症状是RSS不断增加超过了jvm的xmx
- (3)数据链数层——计算机网络复习笔记
热门文章
- bootstrap 学习 ---css样式学习
- (原创)计算机视觉之数学原理-基础篇
- JS函数生成器,function* () {}
- editor does not contain a main type的解决方案
- CROC-MBTU 2012, Elimination Round (ACM-ICPC) E. Mishap in Club
- 怎样在Xcode 4下编译发布与提交App到AppStore?(转)
- MySQL的表类型和存储引擎
- Active MQ 传输 ObjectMessage 异常
- 教师节,老师最大的愿望是...
- 娓娓道来!那些BERT模型压缩方法(一)