您的位置:首页 > 科技 > IT业 > 设计模式-中介者模式

设计模式-中介者模式

2024/11/17 20:38:21 来源:https://blog.csdn.net/qq_58870988/article/details/141234445  浏览:    关键词:设计模式-中介者模式

概述

中介者模式也是一种行为型的设计模式其主要的是通过一个中介者代替代对象之间的通信,减少类于类之间的依赖,从而减少代码耦合中介者模式有几个主要的组成部分,中介者接口,中介者,通信类当需要通信的时候,通过中介者将具体的信息传到需要传递的类中,实现类于类之间的通信。


例子:在两个城市中,有小明和小红两个笔友,由于距离比较远,两个人没法直接通信,所以需要邮差(中介者)将消息传递给对方,请设计实现。

中介者模式

using static POC;
using System.Numerics;internal class Program
{private static void Main(string[] args){XiaoMing xiaoming = new XiaoMing();XiaoHong xiaohong = new XiaoHong();PostMan PM = new PostMan(xiaoming, xiaohong);//创建中介者xiaohong.Mail();//小红寄出了邮件xiaoming.Mail();//小明寄出了邮件}public interface IMediator{void Notify(IMediator sender, string name);}public class PostMan : IMediator//邮差{private readonly XiaoMing _xiaoming;private readonly XiaoHong _xiaohong;public PostMan(XiaoMing XM, XiaoHong XH){_xiaoming = XM;_xiaohong = XH;_xiaoming.SetMediator(this);_xiaohong.SetMediator(this);}public void Notify(IMediator sender, string name){if (name == "xiaohong"){_xiaohong.Message("通知小红,小明寄出了邮件");}else if (name == "xiaoming"){_xiaoming.Message("通知小明,小红寄出了邮件");}}}public abstract class User//用户基类{protected IMediator _mediator;public void SetMediator(IMediator mediator){_mediator = mediator;}public abstract void Mail();public abstract void Message(string message);}public class XiaoMing : User//用户小明{public override void Mail(){_mediator.Notify(_mediator, "xiaohong");}public override void Message(string message){Console.WriteLine(message);}}public class XiaoHong : User//用户小红{public override void Mail(){_mediator.Notify(_mediator, "xiaoming");}public override void Message(string message){Console.WriteLine(message);}}
}

输出

通知小明,小红寄出了邮件
通知小红,小明寄出了邮件

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com