Posted on 2011-01-16 16:42
逐漸 閱讀(1590)
評論(0) 編輯 收藏 引用
pimp idiom的詳細說明可以訪
http://www.gotw.ca/gotw/024.htm(這個網(wǎng)站好像被墻了,很諷刺),其實就是將定義與實現(xiàn)分開。
在我博客上一篇隨筆《關于高內聚低偶合》提到的問題,pimp idiom對降低程序偶合有一定的幫助,下面是我的理解思路,大家有好的意見或者更好的方法可以一起討論下:
1 class Para_Base
2 {
3 //
4 };
5
6 class GA_Para
7 :public Para_Base
8 {
9 //
10 };
11
12 class Alg_Base
13 {
14 public:
15 Alg_Base(Para_Base *p)
16 :m_pPara(p) { }
17 //
18 protected:
19 Para_Base *m_pPara;
20 };
21
22 class GA_Alg
23 :public Alg_Base
24 {
25 //
26 public:
27 GA_Alg(GA_Para *pGA)
28 :Alg_Base(pGA) { }
29 }; 參數(shù)基類Para_Base和特定的算法參數(shù)類GA_Para都沒有改變。
算法基類Alg_Base的模板去掉了,同時添加了一個指向參數(shù)基類Para_Base的指針成員變量,而以前用的是模板指針。并且修改了構造函數(shù),構造函數(shù)接受一個指向Para_Base的指針并賦給m_pPara。
特定算法類GA_Alg繼承自算法基類Alg_Base,但修改了構造函數(shù),接受指向GA_Para的一個指針,然后調用父類Alg_Base的構造函數(shù),這樣的結果便是m_pPara指向的是GA_Para實例,等價于Para_Base *m_pPara = new GA_Para();
相對于上一篇提到的模板實現(xiàn),pimp idiom的偶合更低些,而且pimp idiom應用也非常廣泛。