目的:将“类的功能层次结构”和“类的实现层次结构”分类

类的功能层次:通过类的继承添加功能(添加普通函数)

类的实现层次:通过类的继承实现虚函数

理解:和适配器模式中的桥接方法相同

例子:

class DisplayImpl
{
public:
virtual void open() = 0;
virtual void print() = 0;
virtual void close() = 0;
}; class StringDisplayImpl: public DisplayImpl //实现性扩展
{
public:
void open()
{
cout << "open()" << endl;
} void print()
{
cout << "print()" << endl;
} void close()
{
cout << "close()" << endl;
}
};
class Display
{
DisplayImpl* pImpl; //桥接的核心代码
public:
Display(DisplayImpl* pImpl)
{
this->pImpl = pImpl;
} void print()
{
pImpl->open();
pImpl->print();
pImpl->close();
}
}; class MultiDisplay: public Display //功能性扩展
{
public:
MultiDisplay(DisplayImpl* pImpl): Display(pImpl)
{} void multiPrint()
{
for(int i=0; i<5; i++)
{
print();
}
}
};
int main()
{
Display* d = new Display(new StringDisplayImpl());
d->print(); cout << endl; MultiDisplay* md = new MultiDisplay(new StringDisplayImpl());
md->multiPrint(); return 0;
}

最新文章

  1. Virus.Win32.Virlock.b分析
  2. mysql开发小结
  3. 多线程迭代之——LINQ to TaskQuery
  4. zoj3416 Balanced Number
  5. jsp配置项目时出错Deployment failure on Tomcat 6.x. Could not copy all resources to
  6. Mesh系列文章 - 自定义Mesh
  7. MVC 百度地图的基本使用
  8. android开发 wifi开发工具类
  9. POJ 2080
  10. Linux下SSH各配置项解释
  11. [liu yanling]软件测试的分类
  12. 鸭子类型duck typing(动态)
  13. 九度OJ 1025 最大报销额(01背包)
  14. Wii硬盘游戏管理
  15. 关于VFP9.0备注字段(memo)插入编辑问题
  16. 一步一步学数据结构之1--n(通用树)
  17. Linux网络编程——连接和面向连接的协议之间没有区别
  18. Java获取IP
  19. websevice(Web服务)基础
  20. cJSON使用

热门文章

  1. 再看rabbitmq的交换器和队列的关系
  2. Android studio debug apk包安装失败
  3. android面试详解
  4. 用Python进行实时计算——PyFlink快速入门
  5. Oracle的number数据类型
  6. MongoDB入门二
  7. onunload对应的js代码为什么不能执行?和onbeforeunload的区别?
  8. 【未完待续】MVC 之HTML辅助方法
  9. 解决wpf项目中无法添加OpenFileDialog 实例的问题
  10. 浏览器缓存_HTTP强缓存和协商缓存