桥接模式的很好实现方式(应用shared_ptr)

桥接模式是一种结构型设计模式,它把类的具体实现细节对用户隐藏起来,以达到类之间的最小耦合关系。桥接模式也被称为pimpl惯用法,它可以将头文件的依赖关系降到最小,减少编译时间,而且可以不适用虚函数实现多态。

 

首先声明一个类Sample,它仅向外界暴露了最小的细节,真正的实现在内部类impl。

 

Sample.h

#pragma once #include <boost/smart_ptr/shared_ptr.hpp> using boost::shared_ptr; class Sample { private: class impl; // 不完整的内部类声明 shared_ptr<impl> p; // shared_pte成员变量 public: Sample(void); // 构造函数 void print(); // 提供给外部的接口 }; 

 

在Sample的cpp文件中完整定义impl类和其他功能

 

Sample.cpp

 

 

#include "Sample.h" #include <boost/make_shared.hpp> #include <iostream> // 内部类的实现 class Sample::impl { public: void print(); }; void Sample::impl::print() { std::cout << "impl print" << std::endl; } Sample::Sample(void) { // 初始化shared_ptr p = boost::make_shared<impl>(); } void Sample::print() { // 调用pimpl实现print() p->print(); } 

 

最后是使用方法

Sample s; s.print(); 

 

桥接模式非常好用,它可以任意改变具体的实现而外界对此一无所知,也减少了源文件之间的编译依赖,使程序获得了更多的灵活性。而shared_ptr是实现它的最佳工具之一,它解决了指针的共享和引用计数问题。

 

本文参考《Boost程序库完全开发指南》中的内存管理一章

关于pimpl惯用法请参考:http://blog.sina.com.cn/s/blog_48f93b530100n2bc.html

 

你可能感兴趣的:(设计模式,Class,工具,n2)