我想爲我的遊戲設計一個易於擴展的物品系統,我不需要修改現有的代碼。我想隨時添加帶有新效果的物品。使用什麼樣的設計模式?
特質我的項目有一個共同點:
的名稱, 描述, 一個NPC賣出價, 如果可以裝備它, 要求的水平, 如果是在戰鬥中使用, 如果可以在戰場以外使用, 冷卻時間
所以我可以把它封裝到一個類中。但現在有項目效應。
例子: 癒合X健康點, 治癒X點法力值, 消除DEBUFF X, 加BUFF X, 給出了裝備X屬性點, 有X%的機率造成一些其他影響裝備的時候, 等等。
而這些可以像這樣組合:醫療x生命值和法力值。前四個是可用項目可以具有的效果的示例,而最後兩個是可等效項目可以具有的效果的示例。
其背後的想法是,我在數據庫中也有這樣的結構,我可以在數據庫中添加一個新的效果組合的新項目,然後我的代碼讀取它並將它一起構建成一個新的奇特項目,沒有我必須修改太多。我需要修改代碼的唯一時間是顯然添加新的效果。
你會如何把它放在一起的設計模式?
我想到了裝飾者。對於這個或者甚至是多種設計模式的組合,是否有不同的更好的設計模式?
最簡單的方法是給一個ID,每個效果,實現每個效果(和複製的綜合效果代碼)。如果有多種組合並且組合一次最多隻能有2種效果,則可以使用2個ID。至於OOP部分,您可以擁有一個實現每個項目的Effect接口的對象列表。 – nhahtdh