基于ET的設(shè)計(jì)模式 一

其實(shí)ET主要是ECS的思路蜜另,不過OO的設(shè)計(jì)模式也可以借鑒一些好的啊研。畢竟基于類镇草。
ET將數(shù)據(jù)放在Entity立莉,將方法放在Comoponent和System(擴(kuò)展方法)里的思路對于熱更來說真的是太方便了。
但是在開發(fā)過程中烟很,還是有很多需求變更情況颈墅,(人員變更蜡镶,需求變更,技術(shù)方案重構(gòu))等恤筛,這個(gè)時(shí)候團(tuán)隊(duì)保持思路一致官还,會(huì)帶來很多好處,比如:交接容易毒坛,技術(shù)維護(hù)成本低等望伦。
從今天起要將23個(gè)設(shè)計(jì)模式在ET里邊的應(yīng)用方法和思路抽出來,做一個(gè)系列煎殷,希望能夠和大家多多交流屯伞,說的不對的地方請指正。

開發(fā)環(huán)境:
IDE:VS2017 pro
Unity:Unity 2019.4.29f1 (64-bit)
MongoDB:win32-x86_64-2008plus-ssl-3.4.9
OS:Windows10 
UI:FairlyGUI  2021.3.1

先聊聊我理解的設(shè)計(jì)模式的幾大原則:

  1. 單一職責(zé)
    一個(gè)方法一次只做一件事情(做好積木模塊豪直,后面方便組合功能)
  2. 開閉
    需要支持在不修改歷史的代碼劣摇,流程的情況下添加新Feature后,不引入新的bug(在ET里邊多見于System方法來擴(kuò)展新功能弓乙,在時(shí)機(jī)項(xiàng)目中末融,很多新手團(tuán)隊(duì)出現(xiàn)的bug反復(fù)問題,來源于沒有遵循這個(gè)原則)
  3. 里氏替換
    子類有一切父類的功能(但是在ECS里邊暇韧,我覺得不太適用勾习,畢竟都是通過組件來擴(kuò)展功能)
  4. 依賴倒置
    抽象出流程,針對接口編程(例如:ET里邊對流程的生命周期理解非常重要锨咙,OnStart语卤,OnAwake,OnDestroy等待酪刀,需要針對這些“接口”來最好規(guī)劃)
    這個(gè)DIP原則粹舵,有一個(gè)比較好理解的例子就是:電腦的USB接口,只要滿足USB的接口方法骂倘,任何電子設(shè)備都可以正常被識(shí)別和接入眼滤。放在ET框架理解:我們要做的框架就是主板,開出很多USB接口历涝,其他人只要根據(jù)我定義的USB接口诅需,那么硬盤,鼠標(biāo)鍵盤荧库,IO等外設(shè)堰塌,都可以接入了。從而實(shí)現(xiàn)拔插功能模塊分衫。從這個(gè)例子知道:我這里定義了一個(gè)抽象的USB接口场刑,外設(shè)的功能千變?nèi)f化,就是針對我定義的抽象接口編程蚪战,你實(shí)現(xiàn)什么功能就是什么外設(shè)牵现。
    同樣ET框架也滿足DIP原則铐懊,我這里提問:Game.Scene里邊的接口有哪些,是怎么實(shí)現(xiàn)的瞎疼?
  5. 接口隔離
    不要把所有的接口方法都設(shè)置為必須實(shí)現(xiàn)的科乎,這點(diǎn)好理解,比如我寫一個(gè)網(wǎng)絡(luò)接口贼急,你沒必要讓我實(shí)現(xiàn)本地存儲(chǔ)的接口茅茂。
  6. 最少知識(shí)
    我的理解是:高內(nèi)聚低耦合,不要單例滿天飛竿裂,否則后面沒法維護(hù)了玉吁。必須減少類模塊之間的耦合。通過OB模式腻异,等模式來做解耦。
    這個(gè)模式也是主程們最喜歡的模式这揣,重構(gòu)大法悔常,只有深刻理解這個(gè)模式,才能往主程走進(jìn)一步给赞。
  7. 少繼承多組合
    我的直觀感受机打,如果違反了這個(gè)原則,那么基于OO編程的最可怕的就在于多重繼承片迅,一旦缺少規(guī)劃和維護(hù)残邀,時(shí)間一長就會(huì)變成一個(gè)特別大而全的類了。

還有一些原則柑蛇,我的理解之所以叫原則芥挣,那就是獨(dú)孤九劍的劍招,只可意會(huì)不可言傳耻台,沒辦法說的非常細(xì)致空免,只能針對具體問題具體分析,也不能為了模式而模式盆耽。只有恰到好處的精妙設(shè)計(jì)蹋砚,不要東施效顰的拙略模仿。這一拳二十年的功夫摄杂,不是一朝一夕能搞出來的坝咐。

針對這些原則和經(jīng)驗(yàn),國外的GOF析恢,提出了的23種設(shè)計(jì)模式墨坚,基本上可以分為三大類:

  1. 生成模式:產(chǎn)生對象的過程和方式 5個(gè)
工廠,抽象工廠氮昧,單例框杜,構(gòu)造浦楣,原則 
  1. 結(jié)構(gòu)模式:對象之間組合的生命周期 7個(gè)
適配器,外觀咪辱,橋接振劳,裝飾,代理油狂,組合历恐,享元
  1. 行為模式:數(shù)據(jù)交互或者互動(dòng)的方式 11個(gè)
模板,策略专筷,命令弱贼,中介,觀察磷蛹,迭代吮旅,訪問,責(zé)任鏈味咳,備忘錄庇勃,狀態(tài),解析器

當(dāng)然ET里邊也不是包含了所有的設(shè)計(jì)模式槽驶,里邊的一些常用的就幾種责嚷。

為啥要學(xué)這個(gè):記住 ~ 不要開起袖子就擼,否則永遠(yuǎn)是底層碼農(nóng)掂铐。你寫的代碼罕拂,不要一上來就被主程重構(gòu)了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末全陨,一起剝皮案震驚了整個(gè)濱河市爆班,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌烤镐,老刑警劉巖蛋济,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異炮叶,居然都是意外死亡碗旅,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進(jìn)店門镜悉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來祟辟,“玉大人,你說我怎么就攤上這事侣肄【衫В” “怎么了?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長吼具。 經(jīng)常有香客問我僚纷,道長,這世上最難降的妖魔是什么拗盒? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任怖竭,我火速辦了婚禮,結(jié)果婚禮上陡蝇,老公的妹妹穿的比我還像新娘痊臭。我一直安慰自己,他們只是感情好登夫,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布广匙。 她就那樣靜靜地躺著,像睡著了一般恼策。 火紅的嫁衣襯著肌膚如雪鸦致。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天涣楷,我揣著相機(jī)與錄音蹋凝,去河邊找鬼。 笑死总棵,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的改含。 我是一名探鬼主播情龄,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼捍壤!你這毒婦竟也來了骤视?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤鹃觉,失蹤者是張志新(化名)和其女友劉穎专酗,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體盗扇,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡祷肯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了疗隶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片佑笋。...
    茶點(diǎn)故事閱讀 38,625評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖斑鼻,靈堂內(nèi)的尸體忽然破棺而出蒋纬,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布蜀备,位于F島的核電站关摇,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏碾阁。R本人自食惡果不足惜输虱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瓷蛙。 院中可真熱鬧悼瓮,春花似錦、人聲如沸艰猬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽冠桃。三九已至命贴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間食听,已是汗流浹背胸蛛。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留樱报,地道東北人葬项。 一個(gè)月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像迹蛤,于是被迫代替她去往敵國和親民珍。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評論 2 348

推薦閱讀更多精彩內(nèi)容