文章目录
中介原则(Indirection Principle)
(1)问题
1、如何分配职责以避免两个(或多个)事物之间的直接耦合?
2、如何解耦对象以降低耦合度并提高系统的重用性?
(2)方案 分配职责给中间对象以协调组件或服务之间的操作,使得它们不直接耦合。中间对象就是在其他组件之间建立的中介。
(3)分析 要避免对象之间的直接耦合,最常用的做法是在对象之间引入一个中间对象或中介对象,通过中介对象来间接相连。中介模式对应于面向对象设计原则中的迪米特法则,在外观模式、代理模式、中介者模式等设计模式中都体现了中介原则。
示例
public class SinaChat : ChatRoom { public override void Talk2All(User sender, string message) { _users.Where(u => u.Name != sender.Name) .ToList() .ForEach((u) => u.OnRecieve(sender, message, true)); Console.WriteLine(SPLIT_BREAK); } public override void Talk2User(User sender, User reciever, string message) { var user = _users.Where(u => u.Name == reciever.Name) .FirstOrDefault(); user.OnRecieve(sender, message); Console.WriteLine(SPLIT_BREAK); } }
以上代码可在我的 C#设计模式 系列博文中行为型模式下的中介者模式中找到。
本文由 .Net中文网 原创发布,欢迎大家踊跃转载。
转载请注明本文地址:https://www.byteflying.com/archives/383。
评论列表(2条)
赞赞赞赞赞赞赞
@奔跑:谢谢支持。