[請益] 程式設計一問

作者: NIKE74731 (耐吉七四七三一)   2012-12-25 14:24:39
各位好
當我們寫一個稍微大一點的類別時
通常因為功能較多
會切分成各個子系統進行操作,例如:
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()
目的都是內部的操作
但卻將功能開放給外部
所以我想請問各位板友
對於這個情形來說
是否有解法?
又或者說這樣的一個子系統設計方式本身就是有問題的?
謝謝

Links booklink

Contact Us: admin [ a t ] ucptt.com