设计模式——中介者模式

中介者模式

中介者模式主要用来降低多个对象和类之间的通信复杂度。主要提供了一个中介类,来处理不同类之间的通信。该类属于行为型模式

优点:1,降低了类的复杂度,将一对多转为了一对一。2各类之间解耦。3.符合迪米特原则。
缺点:中介者易变得复杂,不便于维护。

关键逻辑:将所有类之间的通信封装到一个类里进行处理。
何时使用:多个类相互耦合,形成网状结构的时候使用。
应用例子:1,MVC模式。C(控制器)就是M(模型)和V(视图)的中介者。2.中国和其他国家的交流,通过WTO来互相贸易,其他国家也是通过WTO来跟中国交流。
注意事项:不能在职责混乱的时候使用。

下面举个例子来进行说明一下:

如图画了一下大概结构:
设计模式——中介者模式_第1张图片
具体代码如下:
1,首先创建一个聊天室类。

/// 
/// 创建中介者类(聊天室)
/// 
public class ChatRoom 
{   
    /// 
    /// 发信息
    /// 
    public static void SendMessage(string message,User user,User receiveuser)
    {
        Debug.Log(user+"发信息:"+message);
        receiveuser.ReceiveMessage(message,receiveuser);
    }
    /// 
    /// 收信息
    /// 
    public static void ReceiveMessage(string message, User user)
    {
        Debug.Log(user+"收到信息:"+message);
    }
}

2.创建一个用户的接口。

/// 
/// 用户的接口
/// 
public interface User
{
   
     void SendMessage(string message, User user);

     void ReceiveMessage(string message, User user);
}

3.创建用户接口的实体类。

/// 
/// 小明用户
/// 
public class XiaoMing_User : User
{    
    public void ReceiveMessage(string message,User user)
    {
        ChatRoom.ReceiveMessage(message, user);
    }

    public void SendMessage(string message, User user)
    {
        ChatRoom.SendMessage(message, this,user);

    }
}
/// 
/// 小王用户
/// 
public class XiaoWang_User : User
{

    public void ReceiveMessage(string message, User user)
    {
        ChatRoom.ReceiveMessage(message, user);
    }

    public void SendMessage(string message, User user)
    {
        ChatRoom.SendMessage(message,this,user);
    }
}

4.创建一个小明跟小王聊天的一个Demo。

public class Demo : MonoBehaviour
{  
    void Start()
    {
        User user=new XiaoMing_User();
        user.SendMessage("我们今天一起去打球吧",new XiaoWang_User());
    }
}

运行结果:
在这里插入图片描述

你可能感兴趣的:(设计模式)