c#设计模式之中介类模式

定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。中介者模式又叫调停模式,它是迪米特法则的典型应用

类图如下


Mediator

public abstract class Mediator
    {
        public abstract void Register(Colleague colleague);
        public abstract void Relay(Colleague colleague);
    }

ConcreteMediator

public class ConcreteMediator : Mediator
    {
        private List<Colleague> colleagues = new List<Colleague>();
        public override void Register(Colleague colleague)
        {
            if(!this.colleagues.Contains(colleague))
            {
                this.colleagues.Add(colleague);
                colleague.SetMediator(this);
            }
        }

        public override void Relay(Colleague colleague)
        {
            foreach (var item in this.colleagues.Where(p => p!= colleague))
            {
                item.Receive();
            }
        }
    }

Colleague

public abstract class Colleague
    {
        protected Mediator mediator;
        public void SetMediator(Mediator mediator)
        {
            this.mediator = mediator;
        }
        public abstract void Send();
        public abstract void Receive();
    }

ColleageA

 public class ColleageA : Colleague
    {
        public override void Receive()
        {
            Console.WriteLine("Receive in ColleageA");
        }

        public override void Send()
        {
            this.mediator.Relay(this);
        }
    }

ColleageB

public class ColleageB:Colleague
    {
        public override void Send()
        {
            this.mediator.Relay(this);
        }

        public override void Receive()
        {
            Console.WriteLine("Receive in ColleageB");
        }
    }

调用
···
static void Main(string[] args)
{
var mediator = new ConcreteMediator();

        ColleageA colleageA = new ColleageA();
        ColleageB colleageB = new ColleageB();
        mediator.Register(colleageA);
        mediator.Register(colleageB);

        colleageA.Send();
    }

···

优点:

  1. 降低了对象的耦合,使同事类之间不在相互依赖,符合单一职责

缺点:

  1. 当同事类比较多时,中介类职责会变得越来越庞大

源代码地址: 点击我下载 提取码: x284

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 【学习难度:★★★☆☆,使用频率:★★☆☆☆】直接出处:中介者模式梳理和学习:https://github.com...
    BruceOuyang阅读 4,239评论 0 2
  • 我们平时写代码的过程,一个类必然会与其他类产生依赖关系,如果这种依赖关系如网状般错综复杂,那么必然会影响我们的代码...
    不将就更好的你阅读 3,375评论 0 4
  • 目录 本文的结构如下: 引言 什么是中介者模式 模式的结构 典型代码 代码示例 优点和缺点 适用环境 模式应用 一...
    w1992wishes阅读 4,873评论 0 4
  • 一、特性与定义 1. 定义 定义一个中介对象来封装一系列对象之间的交互,使原有对象之间耦合松散,且可以独立地改变他...
    Vic_is_new_Here阅读 5,673评论 0 5
  • 倘若有泪 那都是很好的 只是现在什么都没有 像沙漠里没有了水 天空里没有了星辰 夜晚没有了梦境 天涯没有了归程 没...
    一江春水_d567阅读 1,346评论 0 4

友情链接更多精彩内容