设计模式——中介者模式

中介者模式

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

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

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

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

如图画了一下大概结构:
在这里插入图片描述
具体代码如下:
1,首先创建一个聊天室类。

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

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

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

     void ReceiveMessage(string message, User user);
}

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

/// <summary>
/// 小明用户
/// </summary>
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);

    }
}
/// <summary>
/// 小王用户
/// </summary>
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());
    }
}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值