中介者模式 是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。
实例:MVC 框架,其中C(控制器)就是 M(模型)和 V(视图)的中介者。
优点: 1、降低了类的复杂度,将一对多转化成了一对一。 2、各个类之间的解耦。 3、符合迪米特原则。
下面通过 代码示例 展示 中介者模式:
namespace 中介者模式
{
internal class Program
{
static void Main(string[] args)
{
//使用 User 对象来显示他们之间的通信
User user1 = new User("张三");
User user2 = new User("李四");
user1.ShowMessage("你好李四");
user2.ShowMessage("你好张三");
/*
* 控制台:
* 2022/10/30 19:23:36:张三发送消息为:你好李四
2022/10/30 19:23:36:李四发送消息为:你好张三
*/
}
}
//创建中介类
public class ChatRoom
{
public static void ShowMessage(User user, string msg)
{
Console.WriteLine($"{DateTime.Now}:{user.GetName()}发送消息为:{msg}");
}
}
//通信的 user
public class User
{
private string name;
public User(string name)
{
this.name = name;
}
public string GetName()
{
return name;
}
public void SetName(string name)
{
this.name=name;
}
public void ShowMessage(string msg)
{
ChatRoom.ShowMessage(this, msg);
}
}
}
缺点:中介者会庞大,变得复杂难以维护。