博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式实践-中介者模式
阅读量:4972 次
发布时间:2019-06-12

本文共 3106 字,大约阅读时间需要 10 分钟。

场景

不同设备对象间通信

实现代码

中介者接口

namespace DesignPatterns.Mediator{    ///     /// 中介者接口    ///     public interface IMediator    {        ///         /// 向设备发送消息        ///         /// 消息体        /// 设备对象        void Send(string message, IDevice device);    }}

中介者实现

namespace DesignPatterns.Mediator{    ///     /// 中介者    ///     public class Mediator : IMediator    {        ///         /// Initializes a new instance of the 
class. ///
public Mediator() { } /// /// Gets or sets 设备A对象 /// public DeviceA DeviceA { get; set; } /// /// Gets or sets 设备B对象 /// public DeviceB DeviceB { get; set; } /// /// 向设备发送数据 /// /// 消息体 /// 设备对象 public void Send(string message, IDevice device) { if (device == this.DeviceA) { this.DeviceB.Notify(message); } else { this.DeviceA.Notify(message); } } }}

设备接口

namespace DesignPatterns.Mediator{    ///     /// 设备接口    ///     public interface IDevice    {        ///         /// 接受消息        ///         /// 消息体        void Notify(string message);        ///         /// 发送消息        ///         /// 消息体        void Send(string message);    }}

设备A实现

namespace DesignPatterns.Mediator{    ///     /// 设备A对象    ///     public class DeviceA : IDevice    {        ///         /// 中介者对象        ///         private Mediator _mediator;        ///         /// Initializes a new instance of the 
class. ///
/// 中介者对象 public DeviceA(Mediator mediator) { this._mediator = mediator; } /// /// 接收消息提示 /// /// 消息 public void Notify(string message) { Console.WriteLine($"Get message in A: {message}"); } /// /// 发送消息 /// /// 消息体 public void Send(string message) { this._mediator.Send(message, this); } }}

设备B实现

namespace DesignPatterns.Mediator{    ///     /// 设备A对象    ///     public class DeviceB : IDevice    {        ///         /// 中介者对象        ///         private Mediator _mediator;        ///         /// Initializes a new instance of the 
class. ///
/// 中介者对象 public DeviceB(Mediator mediator) { this._mediator = mediator; } /// /// 接收消息提示 /// /// 消息 public void Notify(string message) { Console.WriteLine($"Get message in B: {message}"); } /// /// 发送消息 /// /// 消息体 public void Send(string message) { this._mediator.Send(message, this); } }}

相关调用

Mediator.Mediator mediator = new Mediator.Mediator();DeviceA deviceA = new DeviceA(mediator);DeviceB deviceB = new DeviceB(mediator);mediator.DeviceA = deviceA;mediator.DeviceB = deviceB;deviceA.Send("发送消息");deviceB.Send("发送消息");

Out:

Get message in B: 发送消息Get message in A: 发送消息

转载于:https://www.cnblogs.com/4thing/p/5716567.html

你可能感兴趣的文章
github下载安装
查看>>
Hat’s Words
查看>>
Java中instanceof关键字的用法总结
查看>>
引用类型-Function类型
查看>>
Nginx Configuration 免费HTTPS加密证书
查看>>
(转)Android 仿订单出票效果 (附DEMO)
查看>>
数据库多张表导出到excel
查看>>
微信小程序去除button默认样式
查看>>
11/26
查看>>
Where does Visual Studio look for C++ Header files?
查看>>
Java打包可执行jar包 包含外部文件
查看>>
Docker容器运行ASP.NET Core
查看>>
WPF图片浏览器(显示大图、小图等)
查看>>
.Net码农学Android---系统架构和基本概念
查看>>
Windows Phone开发(37):动画之ColorAnimation
查看>>
DevExpress的Web控件汉化方法
查看>>
js中escape,encodeURI,encodeURIComponent 区别(转)
查看>>
结对编程项目-四则运算整体总结
查看>>
Android studio怎么修改文件名
查看>>
sass学习笔记-安装
查看>>