給大家科普一下萬達兒童娛樂有限公司(2022已更新(今日/知乎)
之前寫過一篇什么是「設計模式」?,沒有類圖,沒有代碼,有些同學說看不太懂,今天給大家?guī)聿呗阅J剑ㄓ袌D,有碼,有真相?。?。
英雄聯盟(LOL)
玩過LOL的同學都知道,LOL有上百個英雄,如果用OO技術來設計這些英雄該怎么辦?
小明:簡單,先來個父類(Superclass),然后讓所有的英雄繼承此父類,不同的方法重寫父類方法即可。
每個英雄的QWER技能都是不一樣的,重寫可以沒問題,但是召喚師技能每個英雄都是固定的幾個難不成也都要子類重寫?
小明:對哦,召喚師技能如果都讓子類重寫那么就會產生多個子類代碼重復,怎么辦呢?設計原則:找出應用可能需要變化之處,把它們獨立出來,不要和那些不需要變化的代碼混在一起。
小明:變化之處那就是召喚師技能,可以把召喚師技能抽取出來寫成一個接口,所有召喚師技能都需要實現這個接口。
設計原則:針對接口編程,而不是針對實現編程。
小明:這樣可以把所有固定的召喚師技能先寫好,等玩家選擇召喚師技能只需要設置具體的召喚師技能即可。就算以后有新的召喚師技能只需要實現這個接口就好了,具體實現類可以互相的替換。
設計原則:多用組合,少用繼承。
小明:思路理清楚了,那就直接上代碼。召喚師技能接口
具體實現
英雄類
客戶端
這就是所謂的「策略模式」了,定義了算法(召喚師技能接口),分別封裝起來(具體的實現類:傳送、治療術),讓他們之間可以互相替換,此模式讓算法的變化獨立于使用算法的客戶。

以上代碼塊用中文編寫類名、變量名是為了讓大家更好的理解,在實戰(zhàn)過程中記得替換成相對應的英文。
畫圖工具:
Giffy Diagrams相關閱讀:
BRVAH之添加動畫(策略模式)擴展閱讀:
如何實施代碼重構?參考書籍:
《Head First 設計模式》
掃描二維碼推送至手機訪問。
版權聲明:本文由財神資訊-領先的體育資訊互動媒體轉載發(fā)布,如需刪除請聯系。