天天看點

想要開發一款王者榮耀,設計模式要搞懂

今天通過王者榮耀這款遊戲,來和大家說說遊戲背後的設計模式

王者榮耀目前是端遊比較火爆的一款,黑馬此套教程出了之後,評論區的各方大神都立下了Flag(教程見文末)

想要開發一款王者榮耀,設計模式要搞懂

那我們先來由淺入深的了解一下遊戲背後的設計模式

想要開發一款王者榮耀,設計模式要搞懂

遊戲開始的時候 10名玩家組成,5名玩家對抗領5名玩家的對戰遊戲,每一名玩家都可選擇一名英雄來參與戰鬥

想要開發一款王者榮耀,設計模式要搞懂

遊戲剛開始時,自己所選擇英雄與團隊都會出現在自己的基地,為雙方互相推塔遊戲,哪一方的水晶被摧毀了就代表遊戲失敗

想要開發一款王者榮耀,設計模式要搞懂

英雄的設計中中是有許多共性的内容的,首先抽取出來,英雄類包含普通攻擊的方式與功能,所使用技能的攻擊方式

對于英雄來說一定要具備技能,這麼多的技能一定不是固定的,是以我們以技能的功能以接口的方式抽取出來,召喚師技能的某一種技能以類的方式封裝好,每一種技能和接口之間就實作了關系(詳見視訊教程)

想要開發一款王者榮耀,設計模式要搞懂

關于政策模式,官方給出的定義如下。

政策模式将可變的部分從程式中抽象出來分離成算法接口,在該接口下分别封裝一系列算法實作。

這其中的設計原則有: 1.找出應用中需要變化的部分,把他們獨立出來做成算法接口。(我們是把每個英雄的召喚師技能做成了算法接口,局内道具也是可以這樣做的) 2.面向接口程式設計,而不是面向實作。(我們在使用召喚師政策接口時,并不知道它以後還會有什麼樣的召喚師技能) 3.多用組合,少用繼承。(一個完整的英雄,是用具體的接口對象組合而成的,或者說各種接口小對象組合成了一個英雄對象)

政策模式的優點

1. 使用了組合,而不單單是繼承,使得架構更靈活。

2. 富有彈性,可以較好的應對未來的變化。(開-閉原則)

3. 更好的代碼複用性。(相對于繼承)

政策模式的缺點

1. 增加了對象的數目(每個接口都做成了一個對象,對象數目是不是增多了)

關于單例模式,官方給出的定義如下。

Java中單例模式定義:“一個類有且僅有一個執行個體,并且自行執行個體化向整個系統提供。”這其中的設計原則有: 1. 單例模式的類隻提供私有的構造函數,

2. 類定義中含有一個該類的靜态私有對象,

3. 該類提供了一個靜态的公有的函數用于建立或擷取它本身的靜态私有對象。

單例模式的優點

1. 執行個體控制,單例模式會阻止其他對象執行個體化其自己的單例對象的副本,進而確定所有對象都通路唯一執行個體。

2. 靈活性,因為類控制了執行個體化過程,是以類可以靈活更改執行個體化過程。

單例模式的缺點

1. 開銷,雖然數量很少,但如果每次對象請求引用時都要檢查是否存在類的執行個體,将仍然需要一些開銷。可以通過使用靜态初始化解決此問題。

2. 可能的開發混淆,使用單例對象(尤其在類庫中定義的對象)時,開發人員必須記住自己不能使用new關鍵字執行個體化對象。因為可能無法通路庫源代碼,是以應用程式開發人員可能會意外發現自己無法直接執行個體化此類。

學完那我們一起上星耀?好的嘛?

好的鴨~

視訊位址

繼續閱讀