Re: [請教] 請教strategy、state pattern in C++
既然是C++,我就用C++來寫
/* 你說的大class */
class BigClass {
private:
Data * data; //不希望公開曝露的資源,但是必須給State使用。
public:
State* getState() { // 透過BigClass建立State物件。
return new State(data);
}
};
/* 接受 BigClass 工作委託的State */
class State {
private:
Data * data;
public:
State(Data * data) { this->data = data; }
};
所有 State 都必須經由 BigClass 產生,
保證資源除了 BigClass 與 State 以外,
其他人都拿不到也看不到。
這只是非常粗略的作法,不過大體上精神如此
不知道這樣合乎你的要求否?
※ 引述《iamstudent (stu)》之銘言:
: 當一個大class內的工作內容會發生變化時
: 可以把不同的處理方法抽出去
: 然後利用虛擬函數的多型來達成目的
: 但是我在c++使用上有點困擾在
: 要使用的資源都在原本的大class中
: 而抽出去的這些state都要使用它們
: 只想到兩個方法
: a 在大的class中使用friend
: b 在大的class加上public method
: 可是這兩個方法感覺都不好
: 方法a要寫非常多的friend class
: 假設有幾個class: A, B and C1 C2 C3 ... Cn
: A去friend B,然後C系列class都繼承B
: C仍然無法access A的private data
: 結果是A要friend所有C系列的類別
: 方法b則是
: 剛好大的class可以抽出一些低階函數作為共用介面的時候才行的通
: 如果很難寫出一個介面出來的時候
: 一樣很頭痛
: 想請教一下版上先進
: 是否還有其他處理辦法?
--
無論如何矛盾的是,在小說的最後一頁,故事就不再有生命了。
我們的生活繼續下去,故事卻沒有。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.45.97.225
※ 編輯: chchwy 來自: 114.45.97.225 (04/23 19:38)
※ 編輯: chchwy 來自: 114.45.97.225 (04/23 19:41)
推
04/23 19:47, , 1F
04/23 19:47, 1F
推
04/23 19:52, , 2F
04/23 19:52, 2F
→
04/23 19:53, , 3F
04/23 19:53, 3F
→
04/23 19:53, , 4F
04/23 19:53, 4F
推
04/24 01:06, , 5F
04/24 01:06, 5F
討論串 (同標題文章)
OOAD 近期熱門文章
PTT數位生活區 即時熱門文章