[请益] 程式设计一问

楼主: 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