《JAVA与模式》之调停者模式
调停者模式是对象的行为模式。调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显引用。从而使它们可以较松散地耦合。当这些对象中的某些对象之间的相互作用发生改变时,不会立即影响到其他的一些对象之间的相互作用。从而保证这些相互作用可以彼此独立地变化。
为什么需要调停者
如下图所示,这个示意图中有大量的对象,这些对象既会影响别的对象,又会被别的对象所影响,因此常常叫做同事(Colleague)对象。这些同事对象通过彼此的相互作用形成系统的行为。从图中可以看出,几乎每一个对象都需要与其他的对象发生相互作用,而这种相互作用表现为一个对象与另一个对象的直接耦合。这就是过度耦合的系统。
aaarticlea/png;base64,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" alt="" />
通过引入调停者对象(Mediator),可以将系统的网状结构变成以中介者为中心的星形结构,如下图所示。在这个星形结构中,同事对象不再通过直接的联系与另一个对象发生相互作用;相反的,它通过调停者对象与另一个对象发生相互作用。调停者对象的存在保证了对象结构上的稳定,也就是说,系统的结构不会因为新对象的引入造成大量的修改工作。
aaarticlea/png;base64,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" alt="" /> 一个好的面向对象的设计可以使对象之间增加协作性(Collaboration),减少耦合度(Couping)。一个深思熟虑的设计会把一个系统分解为一群相互协作的同事对象,然后给每一个同事对象以独特的责任,恰当的配置它们之间的协作关系,使它们可以在一起工作。
如果没有主板
大家都知道,电脑里面各个配件之间的交互,主要是通过主板来完成的。如果电脑里面没有了主板,那么各个配件之间就必须自行相互交互,以互相传送数据。而且由于各个配件的接口不同,相互之间交互时,还必须把数据接口进行转换才能匹配上。
aaarticlea/png;base64,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" alt="" />
所幸是有了主板,各个配件的交互完全通过主板来完成,每个配件都只需要和主板交互,而主板知道如何跟所有的配件打交道,这样就简单多了。
aaarticlea/png;base64,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" alt="" />
调停者模式的结构
调停者模式的示意性类图如下所示:
aaarticlea/png;base64,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" alt="" />
调停者模式包括以下角色:
● 抽象调停者(Mediator)角色:定义出同事对象到调停者对象的接口,其中主要方法是一个(或多个)事件方法。
● 具体调停者(ConcreteMediator)角色:实现了抽象调停者所声明的事件方法。具体调停者知晓所有的具体同事类,并负责具体的协调各同事对象的交互关系。
● 抽象同事类(Colleague)角色:定义出调停者到同事对象的接口。同事对象只知道调停者而不知道其余的同事对象。
● 具体同事类(ConcreteColleague)角色:所有的具体同事类均从抽象同事类继承而来。实现自己的业务,在需要与其他同事通信的时候,就与持有的调停者通信,调停者会负责与其他的同事交互。
源代码
抽象调停者类
public interface Mediator {
/**
* 同事对象在自身改变的时候来通知调停者方法
* 让调停者去负责相应的与其他同事对象的交互
*/
public void changed(Colleague c);
}
具体调停者类
public class ConcreteMediator implements Mediator {
//持有并维护同事A
private ConcreteColleagueA colleagueA;
//持有并维护同事B
private ConcreteColleagueB colleagueB; public void setColleagueA(ConcreteColleagueA colleagueA) {
this.colleagueA = colleagueA;
} public void setColleagueB(ConcreteColleagueB colleagueB) {
this.colleagueB = colleagueB;
} @Override
public void changed(Colleague c) {
/**
* 某一个同事类发生了变化,通常需要与其他同事交互
* 具体协调相应的同事对象来实现协作行为
*/
} }
抽象同事类
public abstract class Colleague {
//持有一个调停者对象
private Mediator mediator;
/**
* 构造函数
*/
public Colleague(Mediator mediator){
this.mediator = mediator;
}
/**
* 获取当前同事类对应的调停者对象
*/
public Mediator getMediator() {
return mediator;
} }
具体同事类
public class ConcreteColleagueA extends Colleague { public ConcreteColleagueA(Mediator mediator) {
super(mediator);
}
/**
* 示意方法,执行某些操作
*/
public void operation(){
//在需要跟其他同事通信的时候,通知调停者对象
getMediator().changed(this);
}
}
public class ConcreteColleagueB extends Colleague { public ConcreteColleagueB(Mediator mediator) {
super(mediator);
}
/**
* 示意方法,执行某些操作
*/
public void operation(){
//在需要跟其他同事通信的时候,通知调停者对象
getMediator().changed(this);
}
}
使用电脑来看电影
在日常生活中,我们经常使用电脑来看电影,把这个过程描述出来,简化后假定会有如下的交互过程:
(1)首先是光驱要读取光盘上的数据,然后告诉主板,它的状态改变了。
(2)主板去得到光驱的数据,把这些数据交给CPU进行分析处理。
(3)CPU处理完后,把数据分成了视频数据和音频数据,通知主板,它处理完了。
(4)主板去得到CPU处理过后的数据,分别把数据交给显卡和声卡,去显示出视频和发出声音。
要使用调停者模式来实现示例,那就要区分出同事对象和调停者对象。很明显,主板是调停者,而光驱、声卡、CPU、显卡等配件,都是作为同事对象。
aaarticlea/png;base64,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" alt="" />
源代码
抽象同事类
public abstract class Colleague {
//持有一个调停者对象
private Mediator mediator;
/**
* 构造函数
*/
public Colleague(Mediator mediator){
this.mediator = mediator;
}
/**
* 获取当前同事类对应的调停者对象
*/
public Mediator getMediator() {
return mediator;
}
}
同事类——光驱
public class CDDriver extends Colleague{
//光驱读取出来的数据
private String data = "";
/**
* 构造函数
*/
public CDDriver(Mediator mediator) {
super(mediator);
}
/**
* 获取光盘读取出来的数据
*/
public String getData() {
return data;
}
/**
* 读取光盘
*/
public void readCD(){
//逗号前是视频显示的数据,逗号后是声音
this.data = "One Piece,海贼王我当定了";
//通知主板,自己的状态发生了改变
getMediator().changed(this);
}
}
同事类——CPU
public class CPU extends Colleague {
//分解出来的视频数据
private String videoData = "";
//分解出来的声音数据
private String soundData = "";
/**
* 构造函数
*/
public CPU(Mediator mediator) {
super(mediator);
}
/**
* 获取分解出来的视频数据
*/
public String getVideoData() {
return videoData;
}
/**
* 获取分解出来的声音数据
*/
public String getSoundData() {
return soundData;
}
/**
* 处理数据,把数据分成音频和视频的数据
*/
public void executeData(String data){
//把数据分解开,前面是视频数据,后面是音频数据
String[] array = data.split(",");
this.videoData = array[0];
this.soundData = array[1];
//通知主板,CPU完成工作
getMediator().changed(this);
} }
同事类——显卡
public class VideoCard extends Colleague {
/**
* 构造函数
*/
public VideoCard(Mediator mediator) {
super(mediator);
}
/**
* 显示视频数据
*/
public void showData(String data){
System.out.println("您正在观看的是:" + data);
}
}
同事类——声卡
public class SoundCard extends Colleague {
/**
* 构造函数
*/
public SoundCard(Mediator mediator) {
super(mediator);
}
/**
* 按照声频数据发出声音
*/
public void soundData(String data){
System.out.println("画外音:" + data);
}
}
抽象调停者类
public interface Mediator {
/**
* 同事对象在自身改变的时候来通知调停者方法
* 让调停者去负责相应的与其他同事对象的交互
*/
public void changed(Colleague c);
}
具体调停者类
public class MainBoard implements Mediator {
//需要知道要交互的同事类——光驱类
private CDDriver cdDriver = null;
//需要知道要交互的同事类——CPU类
private CPU cpu = null;
//需要知道要交互的同事类——显卡类
private VideoCard videoCard = null;
//需要知道要交互的同事类——声卡类
private SoundCard soundCard = null; public void setCdDriver(CDDriver cdDriver) {
this.cdDriver = cdDriver;
} public void setCpu(CPU cpu) {
this.cpu = cpu;
} public void setVideoCard(VideoCard videoCard) {
this.videoCard = videoCard;
} public void setSoundCard(SoundCard soundCard) {
this.soundCard = soundCard;
} @Override
public void changed(Colleague c) {
if(c instanceof CDDriver){
//表示光驱读取数据了
this.opeCDDriverReadData((CDDriver)c);
}else if(c instanceof CPU){
this.opeCPU((CPU)c);
}
}
/**
* 处理光驱读取数据以后与其他对象的交互
*/
private void opeCDDriverReadData(CDDriver cd){
//先获取光驱读取的数据
String data = cd.getData();
//把这些数据传递给CPU进行处理
cpu.executeData(data);
}
/**
* 处理CPU处理完数据后与其他对象的交互
*/
private void opeCPU(CPU cpu){
//先获取CPU处理后的数据
String videoData = cpu.getVideoData();
String soundData = cpu.getSoundData();
//把这些数据传递给显卡和声卡展示出来
videoCard.showData(videoData);
soundCard.soundData(soundData);
}
}
客户端类
public class Client { public static void main(String[] args) {
//创建调停者——主板
MainBoard mediator = new MainBoard();
//创建同事类
CDDriver cd = new CDDriver(mediator);
CPU cpu = new CPU(mediator);
VideoCard vc = new VideoCard(mediator);
SoundCard sc = new SoundCard(mediator);
//让调停者知道所有同事
mediator.setCdDriver(cd);
mediator.setCpu(cpu);
mediator.setVideoCard(vc);
mediator.setSoundCard(sc);
//开始看电影,把光盘放入光驱,光驱开始读盘
cd.readCD(); } }
运行结果如下:aaarticlea/png;base64,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" alt="" />
调停者模式的优点
● 松散耦合
调停者模式通过把多个同事对象之间的交互封装到调停者对象里面,从而使得同事对象之间松散耦合,基本上可以做到互补依赖。这样一来,同事对象就可以独立地变化和复用,而不再像以前那样“牵一处而动全身”了。
● 集中控制交互
多个同事对象的交互,被封装在调停者对象里面集中管理,使得这些交互行为发生变化的时候,只需要修改调停者对象就可以了,当然如果是已经做好的系统,那么就扩展调停者对象,而各个同事类不需要做修改。
● 多对多变成一对多
没有使用调停者模式的时候,同事对象之间的关系通常是多对多的,引入调停者对象以后,调停者对象和同事对象的关系通常变成双向的一对多,这会让对象的关系更容易理解和实现。
调停者模式的缺点
调停者模式的一个潜在缺点是,过度集中化。如果同事对象的交互非常多,而且比较复杂,当这些复杂性全部集中到调停者的时候,会导致调停者对象变得十分复杂,而且难于管理和维护。
《JAVA与模式》之调停者模式的更多相关文章
- Java设计模式之《调停者模式》及应用场景
原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/6518603.html 调停者模式. 我们想象一下这样的场景:一个系统内部通过许多的类互相之 ...
- 《Java设计模式》之调停者模式(Mediator)
调停者模式是对象的行为模式.调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显引用.从而使它们能够较松散地耦合.当这些对象中的某些对象之间的相互作用发生改变时,不会马上影响到其它的一些 ...
- java设计模式9.备忘录模式、访问者模式、调停者模式
备忘录模式 备忘录模式又叫快照模式,备忘录对象是一个用来存储另外一个对象内部状态快照的对象.备忘录的用意是在不破坏封装的条件下,将一个对象的状态捕捉,并外部化存储起来,从而可以在将来合适的时候把这个对 ...
- JAVA设计模式之调停者模式
在阎宏博士的<JAVA与模式>一书中开头是这样描述调停者(Mediator)模式的: 调停者模式是对象的行为模式.调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显引用.从 ...
- 设计模式《JAVA与模式》之调停者模式
在阎宏博士的<JAVA与模式>一书中开头是这样描述调停者(Mediator)模式的: 调停者模式是对象的行为模式.调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显引用.从 ...
- java设计模式---调停者模式
中介者模式(Mediator):用一个中介对象来封装一系列的对象交互.中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互. 通用类图: 举例:在一个公司里面 ...
- Java描述设计模式(17):调停者模式
本文源码:GitHub·点这里 || GitEE·点这里 一.生活场景 1.场景描述 在公司的日常安排中,通常划分多个部门,每个部门又会分为不同的小组,部门经理的一项核心工作就是协调部门小组之间的工作 ...
- Java设计模式之《职责链模式》及应用场景
原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/6530089.html 职责链模式(称责任链模式)将请求的处理对象像一条长链一般组合起来,形 ...
- Java设计模式之《享元模式》及应用场景
原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/6542449.html 享元模式:"享"就是分享之意,指一物被众人共享, ...
随机推荐
- 从零到一,使用实时音视频 SDK 一起开发一款 Zoom 吧
zoom(zoom.us) 是一款受到广泛使用的在线会议软件.相信各位一定在办公.会议.聊天等各种场景下体验或者使用过,作为一款成熟的商业软件,zoom 提供了稳定的实时音视频通话质量,以及白板.聊天 ...
- PHP文件属性相关函数
<meta charset= "utf-8"><?php //获取文件属性的函数 function getFilePro($filename) { //检测文件是 ...
- Django 的信号 & Flask 的信号
信号:框架内部已帮助开发者预留的可扩展的位置 一.Django 的信号 项目目录结构: django_signal |--- app01 |--- models.py |--- views.py .. ...
- 深入理解计算机操作系统——第11章:CS模型,网络
网络编程: 11.1 客户端-服务器编程模型 (1)一个应用是由一个服务器进程和一个或多个客户端进程组成. (2)服务器管理某种资源,并且操纵这种资源来为客户端服务. CS模型: CS的基本操作是事务 ...
- xhprof安装&&使用[转载]
编译安装 wget http://pecl.php.net/get/xhprof-0.9.2.tgz tar zxf xhprof-0.9.2.tgz cd xhprof-0.9.2/extensio ...
- BZOJ 2308 莫队入门经典
题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=2038 参考博客 https://www.cnblogs.com/Paul-Guderi ...
- 简单使用SOCKET,TCP,UDP模式之间的通信
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC 793定义.在简化的计算机网络OSI模型中, ...
- EXTJS中整合tinymce的富文本编辑器,添加上传图片功能
提供部分代码.Ext.create('Ext.window.Window', { id: 'wind', title: 'CRUD窗口', modal: true, height: 800, widt ...
- oracle 用户账户被锁处理
一.以管理员身份登录 SQL> conn sys/sys as sysdba; (分号是必须的但是我是以system登录的所在这不应该写conn sys/sys as sysdba应该写conn ...
- PLSQL安装资料
一.plsql developer 注册码 plsql developer 10 注册码 product code :4v6hkjs66vc944tp74p3e7t4gs6duq4m4szbf3t38 ...