【Unity3D与23种设计模式】中介者模式(Mediator)
生活随笔
收集整理的這篇文章主要介紹了
【Unity3D与23种设计模式】中介者模式(Mediator)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
GoF中定義:
定義一個接口來封裝一群對象的互動行為
中介者通過移除對象之間的引用
以減少他們之間的耦合度
并且能改變它們之間的互動獨立性
?
游戲做的越大,系統劃分的也就越多
如事件系統,關卡系統,信息系統,界面系統等。
?
系統切分越細,就意味著系統之間的溝通越復雜
單一系統引入太多其他系統的功能,不利于單一系統的轉換和維護
單一系統被過多的系統所依賴,不利于接口的更改,容易牽一發而動全身
由于需要提供給其他系統操作,系統的接口可能會過于龐大,不容易維護
?
using UnityEngine;public abstract class Mediator {public abstract void SendMessage(Colleague theColleague,string Message);}public abstract class Colleague {protected Mediator m_Mediator = null;public Colleague(Mediator theMediator) {m_Mediator = theMediator;}public abstract void Request(string Message);}public class ConcreateColleague1 : Colleague {public ConcreateColleague1(Mediator theMediator) : base(theMediator) { }public void Action() {m_Mediator.SendMessage(this,"Colleage1發出通知");}public override void Request(string Message){Debug.Log("ConcreateColleague1.Request:" + Message);}}public class ConcreateColleague2 : Colleague{public ConcreateColleague2(Mediator theMediator) : base(theMediator) { }public void Action(){m_Mediator.SendMessage(this,"Colleage2發出通知");}public override void Request(string Message){Debug.Log("ConcreateColleague2.Request:" + Message);}}public class ConcreteMediator : Mediator {ConcreateColleague1 m_Colleague1 = null;ConcreateColleague2 m_Colleague2 = null;public void SetColleague1(ConcreateColleague1 theColleague) {m_Colleague1 = theColleague;}public void SetColleague2(ConcreateColleague2 theColleague) {m_Colleague2 = theColleague;}public override void SendMessage(Colleague theColleague, string Message){if (m_Colleague1 == theColleague)m_Colleague2.Request(Message);if (m_Colleague2 == theColleague)m_Colleague1.Request(Message);}}?
先產生中介者ConcreteMediator的對象之后
接著產生兩個Colleague對象
并將其設置給中介者
分別調用兩個Colleague對象的Action方法
查看信息是否通過Mediator傳遞給Colleague
?
?
文章整理自書籍《設計模式與游戲完美開發》 菜升達 著
轉載于:https://www.cnblogs.com/fws94/p/7199500.html
總結
以上是生活随笔為你收集整理的【Unity3D与23种设计模式】中介者模式(Mediator)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows 2012 下Redmin
- 下一篇: PYTHON作业----编写多级菜单