[請益] 程式設計一問

看板OOAD作者 (耐吉七四七三一)時間12年前 (2012/12/25 14:24), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
各位好 當我們寫一個稍微大一點的類別時 通常因為功能較多 會切分成各個子系統進行操作,例如: class BigSystem { private: SystemA* m_pSysA; SystemB* m_pSysB; . . . } 既然是同一系統下的子系統 運作時當然會遇到必須使用到其它子系統的時候 例如 class Game { private: PlayerSystem* m_pPlayerSys; EnemySystem* m_pEnemySys; . . . } 以"當敵人死亡時,玩家生命值+10"為例 EnemySystem::OnKilled() { //do something //PlayerSystem.AddHP(10); } 問題就在如何執行PlayerSystem.AddHP(10)? 直觀上我們可以有以下兩個方法 1.讓EnemySystem取得PlayerSystem,進而執行PlayerSystem的各項行為 2.在Game層寫個public的函式AddPlayerHP(int val),讓EnemySystem執行 但以上兩個方案都有一個相同的問題 開放了一個對Game類別外部來說 不需使用的介面 無論是Game::GetPlayerSystem()或者Game::AddPlayerHP() 目的都是內部的操作 但卻將功能開放給外部 所以我想請問各位板友 對於這個情形來說 是否有解法? 又或者說這樣的一個子系統設計方式本身就是有問題的? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.170.186.36 ※ 編輯: NIKE74731 來自: 1.170.186.36 (12/25 14:25) ※ NIKE74731:轉錄至看板 C_and_CPP 12/25 14:27
文章代碼(AID): #1GsKQgqV (OOAD)
討論串 (同標題文章)
文章代碼(AID): #1GsKQgqV (OOAD)