设为首页 加入收藏

TOP

3.4.6 应用于桥接模式
2013-10-07 13:12:24 来源: 作者: 【 】 浏览:69
Tags:3.4.6 用于 桥接 模式

3.4.6  应用于桥接模式

桥接模式(bridge)是一种结构型设计模式,它把类的具体实现细节对用户隐藏起来,以达到类之间的最小耦合关系。在具体编程(www.cppentry.com)实践中桥接模式也被称为pimpl或者handle/body惯用法,它可以将头文件的依赖关系降到最小,减少编译时间,而且可以不使用虚函数实现多态。

scoped_ptr和shared_ptr都可以用来实现桥接模式,但shared_ptr通常更合适,因为它支持拷贝和赋值,这在很多情况下都是有用的,比如可以配合容器工作。

本书不可能完整讲述桥接模式和pimpl惯用法的所有细节,仅通过一个小例子来说明shared_ptr如何用于pimpl。

首先我们声明一个类sample,它仅向外界暴露了最小的细节,真正的实现在内部类impl,sample用一个shared_ptr来保存它的指针:

  1. class sample  
  2. {  
  3. private:  
  4.     class impl;                             //不完整的内部类声明  
  5.     shared_ptr<impl> p;                     //shared_ptr成员变量  
  6. public:  
  7.     sample();                               //构造函数  
  8.     void print();                           //提供给外界的接口  
  9. };  
  10.  
  11. 在sample的cpp中完整定义impl类和其他功能:  
  12.  
  13. class sample::impl                      //内部类的实现  
  14. {  
  15. public:  
  16.     void print()  
  17.     {   cout << "impl print" << endl;}  
  18. };  
  19.  
  20. sample::sample():p(new impl){}          //构造函数初始化shared_ptr  
  21. void sample::print()                        //调用pimpl实现print()  
  22. {   p->print();} 

最后是桥接模式的使用,很简单:

  1. sample s;  
  2. s.print(); 

桥接模式非常有用,它可以任意改变具体的实现而外界对此一无所知,也减小了源文件之间的编译依赖,使程序获得了更多的灵活性。而shared_ptr是实现它的最佳工具之一,它解决了指针的共享和引用计数问题。(关于桥接模式更详细的讨论请见推荐书目[1])

9.4.10小节(368页)有另一个真实的pimpl用法例子,但很遗憾它没有用到智能指针。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇3.4.7 应用于工厂模式 下一篇22.2.9 屏蔽键盘Power键

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: