行为模式之五---Mediator

1、结构图

Mediator结构图

2、代码

 

 
/**********************
 * 意图:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显
 * 式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
 * 适用性:
 * 1、一组对象以定义良好但是复杂的方式进行通信。产生的相互依赖关系结构混乱且难以理解。 
 * 2、一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象。 
 * 3、想定制一个分布在多个类中的行为,而又不想生成太多的子类。
 * 协作:同事向一个中介者对象发送和接收请求。中介者在各同事间适当地转发请求以实现协作行为。
 * 作者:董怀信
 * 日期:2009-06-08
 * *********************************************************/
 
using System;
 
namespace DesignPattern.BehavioralPattern
{
    /// <summary>
    /// 中介者定义一个接口用于与各同事(Colleague)对象通信。
    /// </summary>
    public abstract class Mediator
    {
        public abstract void Inform();
        public abstract void SetColleagues(Colleague colleague1, Colleague colleague2);
    }
 
    /// <summary>
    /// 具体中介者通过协调各同事对象实现协作行为。
    /// 了解并维护它的各个同事。
    /// </summary>
    public class ConcreteMediator:Mediator
    {
        Colleague m_colleague1;
        Colleague m_colleague2;
        public ConcreteMediator()
        {
        }
 
        public override void SetColleagues(Colleague colleague1, Colleague colleague2)
        {
            m_colleague1 = colleague1;
            m_colleague2 = colleague2;
        }
 
 
 
        public override void Inform()
        {
            m_colleague2.ValueChanged();
        }
    }
 
    /// <summary>
    /// 每一个同事类都知道它的中介者对象。
    /// 每一个同事对象在与其他同事通讯的时候,与它的中介者通讯。
    /// </summary>
    public abstract class Colleague
    {
        protected Mediator m_mediator;
        public Colleague(Mediator mediator)
        {
            m_mediator = mediator;
        }
 
        public abstract void ValueChanged();
 
        public abstract void DisplayValue();
    }
 
    /// <summary>
    /// 具体同事1,实现Colleague接口。
    /// </summary>
    public class ConcreteColleague1:Colleague
    {
        private int m_value ;
        public ConcreteColleague1(Mediator mediator):base(mediator)
        {
            m_value = 'A';
        }
 
 
        public override void ValueChanged()
        {
            m_value++;
            m_mediator.Inform();
        }
 
        public override void DisplayValue()
        {
            Console.WriteLine("ConcreteColleague1:DisplayValue:" + m_value.ToString());
        }
    }
 
    /// <summary>
    /// 具体同事2,实现Colleague接口。
    /// </summary>
    public class ConcreteColleague2 : Colleague
    {
        private char m_value;
        public ConcreteColleague2(Mediator mediator)
            : base(mediator)
        {
            m_value = 'A';
        }
 
        public override void ValueChanged()
        {
            m_value++;
        }
 
 
        public override void DisplayValue()
        {
            Console.WriteLine("ConcreteColleague2:DisplayValue:" + m_value.ToString());
        }
    }
 
    /// <summary>
    /// 客户测试
    /// </summary>
    public class Client
    {
        public void Test()
        {
            Mediator mediator = new ConcreteMediator();
            Colleague colleague1 = new ConcreteColleague1(mediator);
            Colleague colleague2 = new ConcreteColleague2(mediator);
            mediator.SetColleagues(colleague1, colleague2);
            Console.WriteLine("Inital Value:");
            colleague1.DisplayValue();
            colleague2.DisplayValue();
 
            colleague1.ValueChanged();
            Console.WriteLine("colleague1.ValueChanged()");
             colleague1.DisplayValue();
             colleague2.DisplayValue();
 
        }
    }
 
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java设计模式是一组经过实践验证的面向对象设计原则和模式,可以帮助开发人员解决常见的软件设计问题。下面是常见的23种设计模式: 1. 创建型模式(Creational Patterns): - 工厂方法模式(Factory Method Pattern) - 抽象工厂模式(Abstract Factory Pattern) - 单例模式(Singleton Pattern) - 原型模式(Prototype Pattern) - 建造者模式(Builder Pattern) 2. 结构型模式(Structural Patterns): - 适配器模式(Adapter Pattern) - 桥接模式(Bridge Pattern) - 组合模式(Composite Pattern) - 装饰器模式(Decorator Pattern) - 外观模式(Facade Pattern) - 享元模式(Flyweight Pattern) - 代理模式(Proxy Pattern) 3. 行为模式(Behavioral Patterns): - 责任链模式(Chain of Responsibility Pattern) - 命令模式(Command Pattern) - 解释器模式(Interpreter Pattern) - 迭代器模式(Iterator Pattern) - 中介者模式Mediator Pattern) - 备忘录模式(Memento Pattern) - 观察者模式(Observer Pattern) - 状态模式(State Pattern) - 策略模式(Strategy Pattern) - 模板方法模式(Template Method Pattern) - 访问者模式(Visitor Pattern) 4. 并发型模式(Concurrency Patterns): - 保护性暂停模式(Guarded Suspension Pattern) - 生产者-消费者模式(Producer-Consumer Pattern) - 读写锁模式(Read-Write Lock Pattern) - 信号量模式(Semaphore Pattern) - 线程池模式(Thread Pool Pattern) 这些设计模式可以根据问题的特点和需求来选择使用,它们提供了一些可复用的解决方案,有助于开发高质量、可维护且易于扩展的软件系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WalsonTung

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值