Fw: [請益] 程式設計一問
※ [本文轉錄自 OOAD 看板 #1GsKQgqV ]
作者: NIKE74731 (耐吉七四七三一) 看板: OOAD
標題: [請益] 程式設計一問
時間: Tue Dec 25 14:24:39 2012
各位好
當我們寫一個稍微大一點的類別時
通常因為功能較多
會切分成各個子系統進行操作,例如:
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)
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 轉錄者: NIKE74731 (1.170.186.36), 時間: 12/25/2012 14:27:37
→
12/25 15:38, , 1F
12/25 15:38, 1F
→
12/25 15:39, , 2F
12/25 15:39, 2F
→
12/25 15:40, , 3F
12/25 15:40, 3F
→
12/25 16:54, , 4F
12/25 16:54, 4F
推
12/25 18:40, , 5F
12/25 18:40, 5F
→
12/25 18:40, , 6F
12/25 18:40, 6F
→
12/25 18:45, , 7F
12/25 18:45, 7F
→
12/25 18:46, , 8F
12/25 18:46, 8F
→
12/25 19:24, , 9F
12/25 19:24, 9F
→
12/25 19:25, , 10F
12/25 19:25, 10F
→
12/25 21:36, , 11F
12/25 21:36, 11F
→
12/26 00:06, , 12F
12/26 00:06, 12F
→
12/26 00:09, , 13F
12/26 00:09, 13F
推
12/26 01:08, , 14F
12/26 01:08, 14F
→
12/26 01:11, , 15F
12/26 01:11, 15F
→
12/26 01:12, , 16F
12/26 01:12, 16F
→
12/26 01:13, , 17F
12/26 01:13, 17F
→
12/26 01:13, , 18F
12/26 01:13, 18F
→
12/26 01:13, , 19F
12/26 01:13, 19F
→
12/26 01:15, , 20F
12/26 01:15, 20F
→
12/26 01:56, , 21F
12/26 01:56, 21F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章