我目前正在製作遊戲。目前,我有一個職業(遊戲環境),負責持有遊戲對象(敵人,武器等)的集合,並進行碰撞檢查,調用對象的創建例程等。隨着我的進步項目中,我開始懷疑是否應該採用更多層次的方法 - 比如擁有一個WeaponsManager,一個EnemiesManager和一個將所有東西放在一起的Environment,或者讓我的Environment類操作每個對象,現在正在做什麼?擁有更多的Java類或者擁有更少的類來完成更多的工作會更好嗎?
它可能提的是,遊戲中的對象已經相當嚴重分層的價值:
BaseClass
-----EnemyClass
----------Enemy1Subclass
----------Enemy2Subclass
-----WeaponClass
----------Weapon1Subclass
----------Weapon2Subclass
BaseClass的有定義的基本對象的屬性,如位置。 EnemyClass和WeaponClass是相當通用的類,它們定義了更多的特定於類的方法和屬性,例如EnemyClass的速度或WeaponClass的損壞。它們大多存在,所以我可以擁有相當通用的集合,而不是爲每個敵人/武器類型單獨收集。 Enemy1Subclass/Enemy2Subclass和Weapon1Subclass/Weapon2Subclass是實際創建和使用的敵人/武器類。
我的Environment類存儲EnemyClass/WeaponClass的集合,並通過調用遊戲對象的方法進行必要的操作。
Environment (manipulates EnemyClass and WeaponClass objects by iterating over their respective arrays and calling their respective methods; doesn't do any subclass-specific stuff)
-----EnemyClass array
----------Enemy1Subclass entry
----------Enemy2Subclass entry
----------Enemy1Subclass entry
-----WeaponClass array
----------Weapon1Subclass entry
----------Weapon2Subclass entry
----------Weapon2Subclass entry
但現在我想知道如果分離的另一個層將是一個不錯的主意,與環境保持EnemyManager/WeaponManager類和相應的管理人員持有和操作自己的藏品:
Environment (calls generic instantiation, destruction, moving, etc. methods in EnemyManager and WeaponManager; doesn't ever directly interact with an EnemyClass or WeaponClass object)
-----EnemyManager (gets instructions from Environment and manipulates EnemyClass objects to carry out those instructions)
----------EnemyClass array
---------------Enemy1Subclass entry
---------------Enemy2Subclass entry
---------------Enemy1Subclass entry
-----WeaponManager (gets instructions from Environment and manipulates WeaponClass objects to carry out those instructions)
----------WeaponClass array
---------------Weapon1Subclass entry
---------------Weapon2Subclass entry
---------------Weapon2Subclass entry
思考?建議?我無法找到任何關於這種「更多班級或更難工作的班級」的會議,所以任何答案都是公平的遊戲,直到幷包括「你的模型是垃圾,重新開始」。雖然希望它不會來。 ;)
可以適用於http://programmers.stackexchange.com/或http://codereview.stackexchange.com/ – rajesh 2013-04-10 05:34:59
最好的標記,因爲我認爲這是一個值得商榷的問題。這個國際海事組織沒有好的答案。但是您應該考慮閱讀設計模式書籍,以便您瞭解適合您的域名或問題的更適合的內容。 – 2013-04-10 05:47:36