设计模式(十五)——多“类”通信:中介者模式

编程入门 行业动态 更新时间:2024-10-05 23:26:46

设计<a href=https://www.elefans.com/category/jswz/34/1771241.html style=模式(十五)——多“类”通信:中介者模式"/>

设计模式(十五)——多“类”通信:中介者模式

中介者模式

中介者模式(Mediator),用一个中介对象来封装一系列的对象交互。用来降低多个对象和类之间通信复杂性。

  • 优点:降低类的复杂度,将一对多的关系转化成一对一关系。将各类之间解耦
  • 缺点:使用中介者到后期会十分庞大,变得复杂,维护难度会巨增
  • 使用场景:当系统中对象之间存在比较复杂的引用关系,导致它们之间的依赖关系混乱难以复用其对象。想通过一个中间类来封装多个类的行为,而又不想生成太多子类的时候可以考虑采用中介者模式。

示例

利用群聊来展示中介者模式的简单使用:
类结构设计如下:

代码逻辑如下:

    public interface ISend{string Name { get; set; }void Send(string message);}public class User : ISend{public string Name { get; set; }public User(string name){this.Name = name;}public void Send(string message){ChatRoom.ShowMessage(this, message);}}public class StoreSystem : ISend{public string Name { get; set; }public StoreSystem(){this.Name = "商城系统";}public void Send(string message){ChatRoom.ShowMessage(this, message);}}  public class BoardSystem : ISend{public string Name { get; set; }public BoardSystem(){this.Name = "系统广播";}public void Send(string message){ChatRoom.ShowMessage(this, message);}}
    public class ChatRoom{public static void ShowMessage(ISend user, string message){Console.WriteLine("[{0}]:{1}", user.Name, message);}}
        static void Main(string[] args){User user1 = new User("张三");User user2 = new User("定坤");StoreSystem store = new StoreSystem();BoardSystem board = new BoardSystem();user1.Send("hahhahah");user2.Send("成功啦");store.Send("新品上市啦");board.Send("XXXX获得了大奖");}
执行结果:
[张三]:hahhahah
[定坤]:成功啦
[商城系统]:新品上市啦
[系统广播]:XXXX获得了大奖

上诉例子中,ChatRoom就相当于中介者,在系统的群聊里用户可能会收发消息,不同的系统可能会有各自的消息广播,利用中介者模式每个消息的发送者只管消息的发送,所有的消息处理都交给中介者ChatRoom来处理,以此来达到解耦的目的。

更多推荐

设计模式(十五)——多“类”通信:中介者模式

本文发布于:2024-02-19 16:03:28,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1764955.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:模式   中介   通信   十五

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!