【設計模式遊戲完美開發】策略模式

GoF定義:“定義一組算法,並封裝每個算法,讓它們可以彼此交換使用。策略模式讓這些算法在客戶端使用它們時能更加獨立”

ICharacterArr:角色屬性基類(接口),擁有一個策略接口對象(抽象對象),其中InitArr初始化屬性會使用這個策略對象來進行初始化屬性,GetPower同理。

IStragety:策略基類(接口),擁有一個角色屬性基類對象,通過它來進行初始化屬性算法和進行GetPower算法運算,對角色屬性產生影響。

PlayerStragety 是 玩家策略實現類, EnemyStragetyA 是 敵人A策略, EnemyStragetyB 是 敵人B策略 均繼承於策略基類實現相關方法。

不難理解,策略其實就是一個算法集合體,根據自身獨特的算法對外部的對象產生作用,如上是三個策略都會有不同的算法進行初始化屬性和獲得Power,進而影響角色類。

策略模式的好處是方便替換決策,假設你一個角色屬性初始化公式需要變動,只需新創建一個策略類來進行,而原有代碼也只是修改少量代碼,不會做太大的改動,以及能夠讓邏輯更加清晰,減少使用if來進行區分不同情況。

讓邏輯更加清晰是指 假設一個類裏面有100多個成員變量,其中有5個是這個初始化屬性用到的,那麼當你再次改動初始化算法時,可能會疏忽大意用錯了相關的變量來計算屬性,或者說是容易產生犯錯的機會,而把這個運算過程放到策略類裏面進行,邏輯就會變清晰,一旦發生錯誤也很容易找到出錯的地方。

減少使用if 其實意思是減少一個類裏面的代碼量,如果不想一個類有上萬行代碼,那就請使用策略模式來整理代碼。而且當一個代碼if變多的情況也是很容易發生錯誤的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章