【Unity3D与23种设计模式】中介者模式(Mediator)
?
GoF中定義:
定義一個(gè)接口來(lái)封裝一群對(duì)象的互動(dòng)行為
中介者通過(guò)移除對(duì)象之間的引用
以減少他們之間的耦合度
并且能改變它們之間的互動(dòng)獨(dú)立性
?
游戲做的越大,系統(tǒng)劃分的也就越多
如事件系統(tǒng),關(guān)卡系統(tǒng),信息系統(tǒng),界面系統(tǒng)等。
?
系統(tǒng)切分越細(xì),就意味著系統(tǒng)之間的溝通越復(fù)雜
單一系統(tǒng)引入太多其他系統(tǒng)的功能,不利于單一系統(tǒng)的轉(zhuǎn)換和維護(hù)
單一系統(tǒng)被過(guò)多的系統(tǒng)所依賴,不利于接口的更改,容易牽一發(fā)而動(dòng)全身
由于需要提供給其他系統(tǒng)操作,系統(tǒng)的接口可能會(huì)過(guò)于龐大,不容易維護(hù)
?
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發(fā)出通知");}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發(fā)出通知");}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);}}?
先產(chǎn)生中介者ConcreteMediator的對(duì)象之后
接著產(chǎn)生兩個(gè)Colleague對(duì)象
并將其設(shè)置給中介者
分別調(diào)用兩個(gè)Colleague對(duì)象的Action方法
查看信息是否通過(guò)Mediator傳遞給Colleague
?
?
文章整理自書(shū)籍《設(shè)計(jì)模式與游戲完美開(kāi)發(fā)》 菜升達(dá) 著
轉(zhuǎn)載于:https://www.cnblogs.com/fws94/p/7199500.html
總結(jié)
以上是生活随笔為你收集整理的【Unity3D与23种设计模式】中介者模式(Mediator)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Windows 2012 下Redmin
- 下一篇: PYTHON作业----编写多级菜单