中介者模式定义:用一个中介对象来封装一些列的对象交互。中介者使个对象不需要显示的互相引用,从而使其耦合松散,而且可以独立的改变他们的交互
我擦,看到上面的这段话,感觉把本来你知道的意思往你不明白的意思上面说啊;实际上就跟找房子似的,你要找房,房东要租房子,中间得通过中介,吐槽一下北京中介行业的混乱现象;这样就不用你自己和房东去接触,砍价还价之类的;而且你和房东可以松耦合,你俩老死不相往来啊
中介者是协调对象的,对象之间的交互都通过中介来完成;
一般中介者是一个抽象类;具体中介者的实现类需要了解各个对象的信息;中介者实现类的责任重了;业务简单可以去除抽象;
为什么要用中介者模式呢?系统分割许多对象可以增加其可复用性,对象连接的增加也会降低可复用性,大量的连接使得对象不可能在没有其他对象的支持下工作,系统变为一个不可分割的整体;对系统进行较大的改动比较困难;
适用场景:
一组对象以良好的定义但是复杂的交互进行通信;以及想定制一个分布在多个类中的行为,而又不想生成太多子类的场合;
典型应用计算器:要慎用;如果出现多对多交互复杂的对象时;反思设计是否合理;
优点和缺点都是它自身啊;
将对象如何协作进行抽象,即对象之间的交互;将中介作为一个独立的概念并将其封装在一个对象中,将对象各自行为本身的的行为转移到他们之间的交互上面来;更宏观的看待系统;将交互复杂转换到了中介者的复杂,控制集中;缺点就是中介者实现类的复杂度比每个对象都要高;
代码例子就是 美国和伊拉克发表声明都是通过联合国安理会发布;而不是两个人对着掐;两国不必直接接触;
package mediator;
public abstract class Country {
protected UnitedNations mediator;
public Country(UnitedNations mediator) {
this.mediator = mediator;
}
http://pv-love.iteye.com/admin/blogs/1908162/edit#
public void declare(String message) {
mediator.declare(message, this);
}
public void getMessage(String message) {
System.out.println(this.getClass().getSimpleName() + " 获得的信息是:"
+ message);
}
}
package mediator;
public class Iraq extends Country {
public Iraq(UnitedNations mediator) {
super(mediator);
}
}
package mediator;
public class USA extends Country {
public USA(UnitedNations mediator) {
super(mediator);
}
}
package mediator;
public abstract class UnitedNations {
public abstract void declare(String message, Country colleague);
}
package mediator;
public class UnitedNationsSecurityCouncil extends UnitedNations {
private Country usa;
private Country iraq;
@Override
public void declare(String message, Country colleague) {
if (colleague == getUsa()) {
getIraq().getMessage(message);
} else if (colleague == getIraq()) {
getUsa().getMessage(message);
}
}
public void setUsa(Country usa) {
this.usa = usa;
}
public Country getUsa() {
return usa;
}
public void setIraq(Country iraq) {
this.iraq = iraq;
}
public Country getIraq() {
return iraq;
}
}
package mediator;
public class TestMediator {
public static void main(String args[]) {
UnitedNationsSecurityCouncil unsc = new UnitedNationsSecurityCouncil();
Country usa = new USA(unsc);
Country iraq = new Iraq(unsc);
unsc.setUsa(usa);
unsc.setIraq(iraq);
usa.declare("别造原子弹啊,要不然我打你");
iraq.declare("光脚不怕穿鞋的,我擦,你来打啊");
}
}
输出下面的文字,他们之间的通信都是通过安理会完成的
Iraq 获得的信息是:别造原子弹啊,要不然我打你
USA 获得的信息是:光脚不怕穿鞋的,我擦,你来打啊[size=large][/size]
分享到:
相关推荐
- 中介者模式:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,且可以独立地改变它们之间的交互。 - 备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部...
本教程共分为5个部分,第一部分是C语言提高部分,第二部分为C++基础部分,第三部分为C++进阶部分,第四部分为C、C++及数据结构基础部分,第五部分为C_C++与设计模式基础,内容非常详细. 第一部分 C语言提高部分目录...
PPT内容包括:内附代码,实例,方便理解。...设计模式14-中介者模式、备忘录模式 设计模式15-观察者模式、状态模式 设计模式16-策略模式、模板方法、访问者 此PPT实例便于理解,对于深入理解OO思想有很大帮助。
12第十二讲代理模式 13第十三讲外观模式 14第十四讲组合模式 15第十五讲桥接模式 16第十六讲适配器模式 17第十七讲解释器模式 18第十八讲中介者模式 19第十九讲职责链模式 20第二十讲迭代模式 21第二十一讲模板方法...
18. 中介者模式(Mediator Pattern) 19. 职责链模式(Chain of Responsibility Pattern) 20. 备忘录模式(Memento Pattern) 21. 策略模式(Strategy Pattern) 22. 访问者模式(Visitor Pattern) 23. 状态模式(State ...
本章节通过一个电商设计模式实战案例,详细阐述了代理模式、享元模式、装饰者模式、工厂模式和状态模式在实际业务场景中的运用。 1. 代理模式 代理模式的核心在于提供一个代理对象,它充当原对象的中介,控制对原...
- 中介者模式(Mediator):定义一个中介对象来简化原本复杂的对象间交互。 - 备忘录模式(Memento):在不破坏封装性的前提下,捕获和恢复对象的内部状态。 - 观察者模式(Observer):定义对象之间的一对多依赖...
在书中,作者们将这二十三种设计模式分成了三类,分别是创建型模式、结构型模式和行为型模式。...中介者模式( Mediator ) 解释器模式( Interpreter ) 书中通过一幅图,剖析了这二十三种设计模式的关系。
5) **去中心化模式**:以用户生成内容(UGC)为主的去中心化模式,如点评类和攻略类网站,为旅游者提供了更丰富的个性化信息,但信息的准确性和一致性有待提升。 基于以上分析,Web2.0的旅游资讯网站开发将着重于...
- (Chapter15.rar)Chapter 16 解释器模式 - (Chapter16.rar)Chapter 17 命令模式 - (Chapter17.rar)Chapter 18 迭代器模式 - (Chapter18.rar)Chapter 19 中介者模式 - (Chapter19.rar)Chapter 20 备忘录模式 - ...
业务模式的核心在于价值,它涵盖了面向客户的价值、面向投资者的价值和面向伙伴的价值。 电子商务的业务模式大致分为以下几类: 1. 电子商店:企业通过互联网直接销售商品,如Amazon.com。 2. 信息中介商:提供...
pattern/src/behavior/memento //13.7备忘录模式 pattern/src/behavior/state //13.8状态模式 pattern/src/behavior/visitor //13.9访问者模式 pattern/src/behavior/mediator //13.10中介者模式 pattern/src/...
3. 行为型模式:这一类模式主要关注对象间如何通信,以及责任分配,包括责任链模式(Chain of Responsibility)、命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、中介者模式(Mediator)...
01统一建模语言基础知识 02面向对象设计原则 03设计模式概述 04简单工厂模式 05工厂方法模式 06抽象工厂模式 ...21中介者模式 22备忘录模式 23观察者模式 24状态模式 25策略模式 26模板方法模式 27访问者模式
pattern/src/behavior/memento //13.7备忘录模式 pattern/src/behavior/state //13.8状态模式 pattern/src/behavior/visitor //13.9访问者模式 pattern/src/behavior/mediator //13.10中介者模式 pattern/src/...
在线招聘系统采用Browser/Client模式,减少了中介环节,提升了招聘效率,同时实现了环保的无纸化办公,有助于企业的竞争力提升。 2. 课题研究内容: 系统设计主要分为前台和后台两个部分。前台功能主要包括用户注册...
根据企业在交易中的地位,B2B模式可大致分为中介模式、以卖方为主的模式、以买方为主的模式和买方整合模式。其中,阿里巴巴是中介模式的成功案例,而海尔B2B代表了以买方为主的模式。 此外,B2B模式还可以按照商务...
3. **行为型模式**:行为型模式主要关注对象之间的交互和职责分配,如责任链模式(Chain of Responsibility)、命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、中介者模式(Mediator)、...
pattern/src/behavior/memento //13.7备忘录模式 pattern/src/behavior/state //13.8状态模式 pattern/src/behavior/visitor //13.9访问者模式 pattern/src/behavior/mediator //13.10中介者模式 pattern/src/...