设计模式之第19章-中介者模式(Java实现)
2015-01-30 16:53
176 查看
[b]设计模式之第19章-中介者模式(Java实现)[/b]
“测试妹纸找你,你的代码出问题了。”“美工妹纸让你看看界面怎么样。”身为程序员总要和各种人打交道,但是如果再分为前端、后端工程师的话,那么关系就会错综复杂起来了,这个时候如果有中介者进行中转,类似于星型网络拓扑的交换机,那么该有多好。(PS:注孤生啊,和测试妹纸、美工妹纸什么的一起讨论增进感情多好,那么好的机会都不珍惜。编者按:我是要做那个中介者,懂么?中介者!众人:good job!)“鱼哥,叫我干嘛?”真是说曹操曹操到,刚刚正说你来着,行了,你来说吧。
[b]中介者模式之自我介绍[/b]
我乃传说中的中介者,又名“Mediator”,定义如下:Define an object that encapsulates how a set of objects interact.Mediator promotes loose coupling by keeping objects from referring to each other explicitly, and it lets you vary their interaction independently.翻译为:用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互。通用类图如下:
View Code
接下来就是重头戏,压轴,也就是说抽象中介者抽象类的实现:
最后是中介类的具体实现:
到此,一个中介者模式就实现了。如果还有其他的相互关联的同事,如测试妹纸、市场、项目经理等等都可以加进去,由中介者进行关联。
[b]中介者模式之应用场景[/b]
接下来我就介绍一下在哪些情况下,可以使用我:
一组对象以定义良好但是复杂的方式进行通信。
一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象。
想定制一个分布在多个类中的行为,而又不想生成太多子类。
当你在项目中遇到以上情况或者类似的情况时,可以使用我来进行对象间的通信,这样会把复杂的问题简单化~虽然对象过多的时候,会导致中介者过于庞大。恩,鱼哥,我讲完了。(PS:给大家说这句话。)哦,大家,我讲完了。(作者满头黑线的离开了、、、)
PS:本博客欢迎转发,但请注明博客地址及作者~
博客地址:http://www.cnblogs.com/voidy/
博客新址:http://voidy.net
<。)#)))≦
“测试妹纸找你,你的代码出问题了。”“美工妹纸让你看看界面怎么样。”身为程序员总要和各种人打交道,但是如果再分为前端、后端工程师的话,那么关系就会错综复杂起来了,这个时候如果有中介者进行中转,类似于星型网络拓扑的交换机,那么该有多好。(PS:注孤生啊,和测试妹纸、美工妹纸什么的一起讨论增进感情多好,那么好的机会都不珍惜。编者按:我是要做那个中介者,懂么?中介者!众人:good job!)“鱼哥,叫我干嘛?”真是说曹操曹操到,刚刚正说你来着,行了,你来说吧。
[b]中介者模式之自我介绍[/b]
我乃传说中的中介者,又名“Mediator”,定义如下:Define an object that encapsulates how a set of objects interact.Mediator promotes loose coupling by keeping objects from referring to each other explicitly, and it lets you vary their interaction independently.翻译为:用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互。通用类图如下:
public class UIer extends AbstractColleague{ public UIer(AbstractMediator mediator){ super(mediator); } //程序员的任务,通过中介者交给程序员 public void notifyProgrammer(){ System.out.println("让程序员看看界面"); super.mediator.view(); } public void beautifyUI(){ System.out.println("美化界面"); } }
View Code
接下来就是重头戏,压轴,也就是说抽象中介者抽象类的实现:
public abstract class AbstractMediator{ //程序员 protected Programmer programmer; //UI妹纸 protected UIer ui; //构造函数 //set、get方法,此处略去 //鱼哥用来处理多个对象间的关系 public abstract void beautifyUI(); public abstract void view(); }
最后是中介类的具体实现:
public class Mediator extends AbstractMediator{ //鱼哥的协调策略 public abstract void beautifyUI(){ super.ui.beautifyUI(); } public abstract void view(){ super.programer.view(); } }
到此,一个中介者模式就实现了。如果还有其他的相互关联的同事,如测试妹纸、市场、项目经理等等都可以加进去,由中介者进行关联。
[b]中介者模式之应用场景[/b]
接下来我就介绍一下在哪些情况下,可以使用我:
一组对象以定义良好但是复杂的方式进行通信。
一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象。
想定制一个分布在多个类中的行为,而又不想生成太多子类。
当你在项目中遇到以上情况或者类似的情况时,可以使用我来进行对象间的通信,这样会把复杂的问题简单化~虽然对象过多的时候,会导致中介者过于庞大。恩,鱼哥,我讲完了。(PS:给大家说这句话。)哦,大家,我讲完了。(作者满头黑线的离开了、、、)
PS:本博客欢迎转发,但请注明博客地址及作者~
博客地址:http://www.cnblogs.com/voidy/
博客新址:http://voidy.net
<。)#)))≦
相关文章推荐
- 【GOF23设计模式】_中介者模式_同事协作类_内部类实现JAVA245
- 设计模式-中介者模式(Java实现)
- Java设计模式菜鸟系列(二十二)中介者模式建模与实现
- 设计模式(Design Pattern) - 行为型模式(Behavioral Pattern) - 中介者模式(Mediator) - Java实现
- Java设计模式菜鸟系列(二十二)中介者模式建模与实现
- 追MM与设计模式的JAVA实现-简单工厂方法
- 23种经典设计模式的java实现_1_抽象工厂模式
- 用Java实现的设计模式系列(1)-Factory
- 用Java实现的设计模式系列(2)-Prototype
- 设计模式:策略模式的实现 c++ 与 java
- 设计模式解析和实现(C++, java)之二十--状态(state)模式
- 设计模式解析和实现(C++, java)之十-singleton模式
- 23种经典设计模式的java实现_2_适配器模式
- 23种经典设计模式的java实现之生成器模式
- 23种经典设计模式的java实现_5_职责链模式
- 怎样使用Java实现Factory设计模式
- 从设计模式学习oop思维,最后再具体通过java实现
- 23种经典设计模式的java实现_3_桥接模式
- 23种经典设计模式的java实现_5_职责链模式
- GoF设计模式学习之一:单例模式(Java实现)