//把class的接口与其实现分离,从而要达到真正的数据隐藏之境,而其不二法门就是运用“桥连接模式(Bridge Pattern)”
//桥连接模式需要把目标类型分为两部分,接口部分和实现部分
- #include <iostream.h>
- class Cimpl;
- class C//接口部分
- {
- public:
- C( int val);
- ~C();
- int get_a()const;
- int get_b()const;
- private:
- Cimpl *impl_;
- };
- class Cimpl//实现部分
- {
- public:
- Cimpl(int val):a_(val),b_(a_){}
- ~Cimpl(){}
- int get_a()const{return a_;}
- int get_b()const{return b_;}
- private:
- int a_;
- int b_;
- };
- C::C(int val){impl_=new Cimpl(val);}
- C::~C(){delete impl_;}
- int C::get_a() const{return impl_->get_a();}
- int C::get_b() const{return impl_->get_b();}
- void main()
- {
- C co(2);
- cout<<"a_=";
- cout<<co.get_a()<<endl;
- cout<<"b_=";
- cout<<co.get_b()<<endl;
- }
任何对Cimpl的修改,只要不改变Class C的接口,影响就会被牢牢钳制在一个单独的实现文件里
//使用桥接设计模式以后,有关class C的代码就不再修改了,修改的只是实现类,也就是Class Cimpl的代码
//这样,使用了Class C的代码就不必从新编译,因为对C来说,内存布局没有发生任何变化
/*桥接模式带来好处是大幅节省了编译时间,而且不必重新编译就能发布使用了Class C的代码更新*/