Mediator模式

参考资料《大话设计模式》

Mediator(中介者)模式:

使各个对象不需要显式的相互调用,从而使其耦合松散。


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ds_mediator
{
class Program
{
static void Main(string[] args)
{
ConcreteMediator m = new ConcreteMediator();
ConcreteColleage1 c1 = new ConcreteColleage1(m);
ConcreteColleage2 c2 = new ConcreteColleage2(m);
m.colleage1 = c1;
m.colleage2 = c2;
c1.Send("你好!");
c2.Send("谢谢!");
}
}

//抽象同事类
abstract class Colleage
{
protected Mediator mediator;
public Colleage(Mediator mediator)
{
this.mediator = mediator;//得到中介者对象
}
}
class ConcreteColleage1 : Colleage
{
public ConcreteColleage1(Mediator mediator)
: base(mediator)
{ }
public void Send(string message)
{
mediator.Send(message, this);
}
public void Notify(string message)
{
Console.WriteLine("同事1得到消息:" + message);
}
}
class ConcreteColleage2 : Colleage
{
public ConcreteColleage2(Mediator mediator)
: base(mediator)
{ }
public void Send(string message)
{
mediator.Send(message, this);
}
public void Notify(string message)
{
Console.WriteLine("同事2得到消息:" + message);
}
}

//抽象中介者
abstract class Mediator
{
public abstract void Send(string message, Colleage collgeage);
}
class ConcreteMediator : Mediator
{
public ConcreteColleage1 colleage1;
public ConcreteColleage2 colleage2;

public override void Send(string message, Colleage colleage)
{
if (colleage == colleage1)
{
colleage2.Notify(message);
}
else
{
colleage1.Notify(message);
}
}
}
}

Mediator模式

时间: 2024-07-28 21:39:28

Mediator模式的相关文章

Mediator 模式

在面向对象系统的设计和开发过程中,对象之间的交互和通信是最为常见的情况,因为对象间的交互本身就是一种通信.在系统比较小的时候,可能对象间的通信不是很多.对象也比较少,我们可以直接硬编码到各个对象的方法中.但是当系统规模变大,对象的量变引起系统复杂度的急剧增加,对象间的通信也变得越来越复杂,这时候我们就要提供一个专门处理对象间交互和通信的类,这个中介者就是 Mediator 模式 1 //////////Colleage.h/////////////////////////////////////

Behavioral模式之Mediator模式

1.意图 用一个中介对象来封装一系列的对象交互.中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互. 2.别名 无 3.动机 面向对象设计鼓励将行为分布到各个对象中.这种分布可能会导致对象间有许多连接.在最坏的情况下,每一个对象都知道其他所有对象. 4.适用性 以下情况使用Mediator模式: 一组对象以定义良好但是复杂的方式进行通信.产生的相互依赖关系结构混乱且难以理解. 一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象. 想定制一个分布

Java中介模式(Mediator模式)

Mediator定义:用一个中介对象来封装一系列关于对象交互行为. 为何使用Mediator模式/中介模式 各个对象之间的交互操作非常多,每个对象的行为操作都依赖彼此对方,修改一个对象的行为,同时会涉及到修改很多其他对象的行为,如果使用Mediator模式,可以使各个对象间的耦合松散,只需关心和 Mediator的关系,使多对多的关系变成了一对多的关系,可以降低系统的复杂性,提高可修改扩展性. 如何使用中介模式 首先 有一个接口,用来定义成员对象之间的交互联系方式:    public inte

【行为型】Mediator模式

中介者模式目的是将对象间的交互封装在一个对象中,从而使用各对象间的相互依赖解耦,并可以独立更改对像间的交互.在实际项目开发过程中,因某些原因(如:业务逻辑处理不当或设计不当等)使得多个不同对象间需要相互(引用)访问,无形当中使得原本几个不相干的或相对较为独立的几个模块产生了相互依赖.随着依赖程度的恶化,后期项目维护将是十分被动的.举个大家可能平时都有遇到过的例子,A界面点击了某个按钮,导致B界面需要关掉.许多人(尤其是新手程序员)总是在A界面的按钮事件响应时调用了B界面的close()行为.接着

Mediator模式(C++实现)

主要参考<大话设计模式>和<设计模式:可复用面向对象软件的基础>两本书.本文介绍中介者模式的实现. 中介者模式:What it is:Define an object that encapsulates how a set of objects interact. Promotes loose coupling by keeping objects from referring to each other explicitly and it lets you vary their

敏捷软件开发 – FACADE模式和MEDIATOR模式

FACADE模式 Db类使得Application类不需要了解System.Data命名空间中的内部细节.它把System.Data的所有通用性和复杂性隐藏在一个非常简单且特定的接口后面. 像Db这样的FACADE类对System.Data的使用施加了许多规约.它知道如何初始化和关闭数据库连接.它知道如何将ProductData的成员变量转换成数据库字段,或反之.它知道如何去构建合适的查询和命令去操纵数据库.它对用户隐藏了所有的复杂性.在Application看来,System.Data是不存在

Java 实现中介者(Mediator)模式

类图 public interface IMediator { public void createMediator(); public void work(); } /** * 中介.调节实际上需要交互的两个元素,让其松耦合 * @author stone * */ public class Mediator implements IMediator { private XmlCode xmlCode; private XmlPreview xmlPreview; @Override publ

【图解设计模式】Mediator模式

组员向仲裁者报告,仲裁者向组员下达指示.组员之间不再相互询问和相互指示. 示例 一个GUI应用程序,它展示了一个登录对话框,用户在其中输入正确的用户名和密码后可以登录. 可以选择作为游客访问(Guest)或是作为用户登录(Login) 作为用户登录时,需要输入正确的用户名(Username)和密码(Password) 点击OK按钮可以登录,点击Cancel按钮可以取消登录 类图 时序图 Mediator接口 1234 public interface { public abstract void

重构if...else...或者switch程序块 为 中介者(Mediator)模式.的思考

http://www.cnblogs.com/insus/p/4142264.html 首先普世的编程架构好坏评判是SOLID(单一功能.开闭原则.里氏替换.接口隔离以及依赖反转) 具体来说,就是当有需求的curd时候,代码应该1)涉及的文件尽可能的少2)修改的文件行数尽可能的少3)修改的文件行块间距不应该太长,避免程序员在一个文件中来回移动.鼠标点击数尽可能少.避免影响思路.4)不应该影响其他模块的.这样就不必全面回归测试.5)鲁棒性:即使输入错误,也不应该系统崩溃. 那么,我们来看看这篇洋洋