频道栏目
首页 > 资讯 > ASP.Net > 正文

步步为营 .NET 设计模式学习笔记 二十、Mediator(中介者模式)

11-05-03        来源:[db:作者]  
收藏   我要投稿

概述

在软件构建过程中,经常会出现多个对象互相关联交互的情况,
对象之间常常会维持一种复杂的引用关系,如果遇到一些需求的更改,这种直接的引用关系将面临不断的变化。
在这种情况下,我们可使用一个“中介对象”来管理对象间的关联关系,避免相互交互的对象之间的紧耦合引用关系,从而更好地抵御变化。

意图
用一个中介对象来封装一系列的对象交互。
中介者使各对象不需要显式的相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。

结构图

alt

角色说明:

Mediator:抽象调停者角色,它定义出同事对象到调停者对象得接口,这个角色一般由Java抽象类实现
ConcreteMediator:具体调停者模式,从抽象调停者继承,实现了超类所声明的事件方法,它从具体同事对象接收消息,向具体同事对象发出命令.
Colleague:抽象同事类角色,它定义了调停者同事对象的接口,它只知道调停者而不知道其余同事对象.
colleague1、colleague2:具体同事类角色,从抽象同事类继承而来,每个具体同事类都知道本身在小范围内的行为,而不知道它在大范围内的目的.

 

生活中的例子

现在大街上,有很多婚姻中介,一般是单身男女把各自的资料存放在婚介处,单身男女自己选择自己有意对像进行比对,如果某对男女互想感兴趣,则安排它们见面交谈,感觉良好就速成,不好就继续配对.

 

示例用例图

刚来到这个地方工作时,就面临租房问题,当时我人生地不熟,找了个中介,给我找了个离公司300米左右的单间,根据这个,我们设计了中介者模式的用例图,用例图如下:

image

 

代码设计:

先创建RentingMediator.cs:

1 public abstract  class RentingMediator
2 {
3     public abstract string Notice(string message,House house);
4 }

 

再创建House.cs:

01 public abstract class House
02 {
03     protected RentingMediator mediator;
04  
05     public House(RentingMediator rentingMediator)
06     {
07         this.mediator = rentingMediator;
08     }
09  
10     public abstract string
相关TAG标签
上一篇:步步为营 .NET 设计模式学习笔记 二十一、Visitor(访问者模式)
下一篇:步步为营 .NET 设计模式学习笔记 十九、Chain of Responsibility(职责链模式)
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站