日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

【Unity3D与23种设计模式】中介者模式(Mediator)

發(fā)布時(shí)間:2024/4/15 asp.net 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Unity3D与23种设计模式】中介者模式(Mediator) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。