[請益] 程式設計一問
各位好
當我們寫一個稍微大一點的類別時
通常因為功能較多
會切分成各個子系統進行操作,例如:
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
討論串 (同標題文章)
OOAD 近期熱門文章
PTT數位生活區 即時熱門文章
-4
30