奢侈品 网站建设方案,做网站的IDE,seo计费怎么刷关键词的,网站的建设需要数据库中介者模式
介绍
设计模式定义案例问题堆积在哪里解决办法中介者代替了多个对象之间的互动 使对象1 2 3 之间的互动 变为#xff1a; 对象1-中介 对象2-中介 对象3-中介好友之间 约饭好友1 通知 好友2 -3 -4 等等加一个群 谁想吃饭就 通知一下 类图 代码 角色
…中介者模式
介绍
设计模式定义案例问题堆积在哪里解决办法中介者代替了多个对象之间的互动 使对象1 2 3 之间的互动 变为 对象1-中介 对象2-中介 对象3-中介好友之间 约饭好友1 通知 好友2 -3 -4 等等加一个群 谁想吃饭就 通知一下 类图 代码 角色
BasePeople // 基类
FriendA
FriendB
FriendC
FriendGroup // 群 BasePeople public abstract class BasePeople
{public string name;public abstract void ReceiverMsg(string msg);public abstract void Send(string msg);
}FriendA
using UnityEngine;public class FriendA : BasePeople
{FriendA() { }public FriendA(string name){this.name name;}public override void ReceiverMsg(string msg){Debug.Log(name 接收: msg);}public override void Send(string msg){Debug.Log(name 发送: msg);FriendGroup.GetIns().SendAllPeopleMsg(name, msg);}
}
FriendB 类似A
FriendC类似A FriendGroup
using System.Collections.Generic;public class FriendGroup
{//---------------------------------------------static FriendGroup self null;private FriendGroup() { }public static FriendGroup GetIns(){if (null self){self new FriendGroup();}return self;}//--------------------------------------------ListBasePeople gruop new ListBasePeople();// 添加public void AddPeople(BasePeople friend){if (null friend)return;gruop.Add(friend);}// 发送public void SendAllPeopleMsg(string senderName, string msg){foreach (var item in gruop){if (senderName ! item.name){item.ReceiverMsg(msg);}}}}测试代码
using UnityEngine;public class TestZJZ : MonoBehaviour
{void Start(){// 创建peopleBasePeople p1 new FriendA(P1);BasePeople p2 new FriendA(P2);BasePeople p3 new FriendA(P3);// 创建群FriendGroup group FriendGroup.GetIns();group.AddPeople(p1);group.AddPeople(p2);group.AddPeople(p3);p3.Send(晚上8点吃饭);}
}结果 总结
在 多对象之间互相通信 提炼出一个中介者 会让类图变得简单漂亮