设计模式学习笔记--Mediator 中介者模式
2009-10-09 19:58
666 查看
我们知道面向对象应用程序是由一组为了提供某种服务而彼此交互的对象组成。当彼此引用的对象数量比较少时,此时对象之间就为直接交互(点对点)。而当对象的数量增加时,这种直接交互会导致对象之间复杂的、混乱的引用,最后形成一张巨大的网,这就会影响应用程序的可维护性。同时,因为对象之间的高耦合,当一个对象直接引用其他的对象时,缩小了这些对象的复用范围。
因此:我们可使用一个“中介对象”来管理对象间的关联关系,避免相互交互的对象之间的紧耦合引用关系,从而更好地抵御变化。
以上的变化反映在下图:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MyMediator
4、具体中介类角色 RealMediator
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MyMediator
2、抽象中介类角色 AbsChatRoom
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MyMediator
4、具体中介类角色 RealChatRoom
Code
#region 聊天室示例
Console.WriteLine();
Console.WriteLine();
Console.WriteLine("---------------聊天室示例-------------");
RealChatRoom room = new RealChatRoom();
AbsParticipant WangJun = new Boy("王军");
AbsParticipant ZhouQiang = new Boy("周强");
AbsParticipant LiWeiDong = new Boy("李卫东");
AbsParticipant YuanHui = new Boy("袁晖");
AbsParticipant SunLing = new Girl("孙玲");
AbsParticipant DenLiLi = new Girl("邓丽丽");
room.Register(WangJun);
room.Register(ZhouQiang);
room.Register(LiWeiDong);
room.Register(YuanHui);
room.Register(SunLing);
room.Register(DenLiLi);
WangJun.Send("孙玲", "你好孙玲"); //此处实质是调用RealChatRoom定义的Send功能来完成Send操作
ZhouQiang.Send("李卫东", "哥们在吗?");
LiWeiDong.Send("周强", "我才上来,今天工作忙不忙?");
YuanHui.Send("孙玲", "昨天看到你哥了");
SunLing.Send("邓丽丽", "作业做完没有?");
DenLiLi.Send("周强", "你是哪里的?");
Console.ReadKey();
#endregion
程序如下图:
运行效果如下:
适用性:
1.一组对象以定义良好但是复杂的方式进行通信。产生的相互依赖关系结构混乱且难以理解。
2.一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象。
3.想定制一个分布在多个类中的行为,而又不想生成太多的子类。
前往:设计模式学习笔记清单
因此:我们可使用一个“中介对象”来管理对象间的关联关系,避免相互交互的对象之间的紧耦合引用关系,从而更好地抵御变化。
以上的变化反映在下图:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MyMediator
4、具体中介类角色 RealMediator
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MyMediator
2、抽象中介类角色 AbsChatRoom
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MyMediator
4、具体中介类角色 RealChatRoom
Code
#region 聊天室示例
Console.WriteLine();
Console.WriteLine();
Console.WriteLine("---------------聊天室示例-------------");
RealChatRoom room = new RealChatRoom();
AbsParticipant WangJun = new Boy("王军");
AbsParticipant ZhouQiang = new Boy("周强");
AbsParticipant LiWeiDong = new Boy("李卫东");
AbsParticipant YuanHui = new Boy("袁晖");
AbsParticipant SunLing = new Girl("孙玲");
AbsParticipant DenLiLi = new Girl("邓丽丽");
room.Register(WangJun);
room.Register(ZhouQiang);
room.Register(LiWeiDong);
room.Register(YuanHui);
room.Register(SunLing);
room.Register(DenLiLi);
WangJun.Send("孙玲", "你好孙玲"); //此处实质是调用RealChatRoom定义的Send功能来完成Send操作
ZhouQiang.Send("李卫东", "哥们在吗?");
LiWeiDong.Send("周强", "我才上来,今天工作忙不忙?");
YuanHui.Send("孙玲", "昨天看到你哥了");
SunLing.Send("邓丽丽", "作业做完没有?");
DenLiLi.Send("周强", "你是哪里的?");
Console.ReadKey();
#endregion
程序如下图:
运行效果如下:
适用性:
1.一组对象以定义良好但是复杂的方式进行通信。产生的相互依赖关系结构混乱且难以理解。
2.一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象。
3.想定制一个分布在多个类中的行为,而又不想生成太多的子类。
前往:设计模式学习笔记清单
相关文章推荐
- 设计模式学习笔记——中介者(Mediator)模式
- HeadFirst 设计模式学习笔记18--中介者(Mediator)模式拾零
- 【设计模式学习笔记十八】【行为模式】【中介者模式(Mediator)】
- 设计模式学习笔记--中介者模式Mediator pattern(Java版)
- 步步为营 .NET 设计模式学习笔记 二十、Mediator(中介者模式)
- 【HeadFirst 设计模式学习笔记】17 中介者(Mediator)模式拾零
- 步步为营 .NET 设计模式学习笔记 二十、Mediator(中介者模式)
- 步步为营 .NET 设计模式学习笔记 二十、Mediator(中介者模式)
- 设计模式学习—Mediator(中介者)
- 设计模式 笔记 中介者模式 Mediator
- 设计模式学习—Mediator(中介者)
- java/android 设计模式学习笔记(18)---中介者模式
- C#面向对象设计模式纵横谈 学习笔记17 Mediator 中介者模式(行为型模式)
- 设计模式学习笔记(23)——中介者模式
- 设计模式 笔记 中介者模式 Mediator
- 【学习笔记javascript设计模式与开发实践(中介者模式)----14】
- 设计模式学习笔记之中介者模式
- 设计模式学习笔记——中介者模式
- 设计模式学习—中介者模式(Mediator Design Pattern)
- 设计模式学习笔记2:说说Mediator模式