我有一個關於如何處理這種類層次結構的問題。層次結構與遊戲有關,但我認爲它足以通過gamdev。我可以想象這種事偶爾會出現,所以我很好奇可能的解決方案如何處理類層次結構
我有一個名爲BaseCharacter的基類,它定義了我的遊戲中的一個角色。它包含所有基本統計數據,狀態效應持有者,事件等以具有基線字符。我的大部分遊戲邏輯都是在BaseCharacter的實體上進行操作,在必要時進行投射。
從那裏我繼承到一個人形生物類,它增加了必要的結構和方法來爲角色添加裝備(武器,護甲等),最後我有一個PlayableCharacter類,從類人生物吸入並添加了當前EXP,可配置能力結構等
因此類結構很簡單:
BaseCharacter --->人形---> PlayableCharacter
這種結構用於定義玩家身邊人物的偉大工程,但我可能會決定再改進一下結構。我必須能夠將「敵人」類添加到層次結構中。爲了滿足敵人的需求,我需要添加一些與EXP /點有關的數據結構/方法來打敗敵人,物品戰鬥表等。
問題是,我在哪裏添加這些結構?將它們添加到BaseCharacter似乎是一個糟糕的主意,因爲我基本上說每個角色都有一個敵方實體所需的方法/數據結構。我考慮開始一個單獨的類,最終會看起來像這樣:
BaseCharacter--->Humanoid--->PlayableCharacter
\---->Enemy--->EnemyHumanoid
其中Enemy繼承自BaseCharacter。 EnemyHumanoid將添加與BaseCharacter-> Humanoid的繼承相同的一組方法/數據結構。這是有效的,但意味着我不能將敵人人型投入人型生物,儘管敵人人型符合人形生物的要求。這也增加了冗餘,因爲我有這兩個繼承添加完全相同的一組對象/方法。
然後使用名爲EnemyInterface一個單獨的類考慮,並與繼承層次是這樣結束:
BaseCharacter----->Humanoid----->PlayableCharacter
| |
V V
Enemy EnemyHumanoid
敵人EnemyHumanoid都實現EnemyInterface。但是,我現在失去了敵人< - >敵人人類關係。我應該在這裏使用多重不義行爲嗎? (有敵人和人型生物的敵人人形?)被認爲是壞形式?有沒有更合乎邏輯的方法來做到這一點?這裏的例子非常簡單,但如果我最終分裂我的類層次更多,它只會變得更加複雜。
任何幫助,將不勝感激