zhujian

揣着梦想骑驴找马但不虐待驴
posts - 10, comments - 7, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

pimp idiom降低程序偶合

Posted on 2011-01-16 16:42 逐渐 阅读(1579) 评论(0)  编辑 收藏 引用
pimp idiom的详细说明可以访http://www.gotw.ca/gotw/024.htm(这个网站好像被墙了,很讽刺),其实就是将定义与实现分开。

在我博客上一篇随笔《关于高内聚低偶合》提到的问题,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 };

参数基类Para_Base和特定的算法参数类GA_Para都没有改变。

算法基类Alg_Base的模板去掉了,同时添加了一个指向参数基类Para_Base的指针成员变量,而以前用的是模板指针。并且修改了构造函数,构造函数接受一个指向Para_Base的指针并赋给m_pPara。

特定算法类GA_Alg继承自算法基类Alg_Base,但修改了构造函数,接受指向GA_Para的一个指针,然后调用父类Alg_Base的构造函数,这样的结果便是m_pPara指向的是GA_Para实例,等价于Para_Base *m_pPara = new GA_Para();

相对于上一篇提到的模板实现,pimp idiom的偶合更低些,而且pimp idiom应用也非常广泛。

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理