每天一个设计模式: 桥模式(Bridge)
2016-01-11 16:34
429 查看
#ifndef ABSTRACTION_H #define ABSTRACTION_H class AbstractionImp; class Abstraction { public: virtual ~Abstraction() = 0; virtual void Operation() = 0; protected: Abstraction(); private: }; class RefinedAbstraction: public Abstraction { public: RefinedAbstraction(AbstractionImp* imp); ~RefinedAbstraction(); void Operation(); protected: private: AbstractionImp* _imp; }; #endif // ABSTRACTION_H
#include "abstraction.h" #include "abstractionimp.h" Abstraction::Abstraction() { } Abstraction::~Abstraction() { } RefinedAbstraction::RefinedAbstraction(AbstractionImp *imp) { this->_imp = imp; } RefinedAbstraction::~RefinedAbstraction() { } void RefinedAbstraction::Operation() { this->_imp->Operation(); }
#ifndef ABSTRACTIONIMP_H #define ABSTRACTIONIMP_H class AbstractionImp { public: virtual ~AbstractionImp(); virtual void Operation() = 0; protected: AbstractionImp(); private: }; class ConcreteAbstractionImp: public AbstractionImp { public: ConcreteAbstractionImp() ; ~ConcreteAbstractionImp(); virtual void Operation(); protected: private: }; #endif // ABSTRACTIONIMP_H
#include "abstractionimp.h" #include <iostream> AbstractionImp::AbstractionImp() { } AbstractionImp::~AbstractionImp() { } ConcreteAbstractionImp::ConcreteAbstractionImp() { } ConcreteAbstractionImp::~ConcreteAbstractionImp() { } void ConcreteAbstractionImp::Operation() { std::cout<<"ConcreteAbstractionImp"<<std::endl; }
#include <iostream> #include "abstraction.h" #include "abstractionimp.h" using namespace std; int main() { AbstractionImp* imp = new ConcreteAbstractionImp(); Abstraction* abs = new RefinedAbstraction(imp); abs->Operation(); return 0; }
相关文章推荐
- Android自定义ProgressDialog进度等待框
- PreparedStatement与SQL批处理
- android TouchImageView 初级篇
- 86、交换机安全MAC层攻击配置实验之Static CAM
- 自定义状态栏
- 面试题9:斐波那契数列
- CSS样式随笔总结
- caffe添加layer层
- iOS APP之本地数据存储(译)
- 1.11考核数组中有字典
- WEB扫描类产品测试--AppScan-WVS-WebRavor(8)
- fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86'
- 怪物形象设计要素
- [Andorid开发艺术探索 读书笔记]Activity的生命周期和启动模式 (二)
- Android Accessibility(辅助功能) 学习
- HashMap和HashTable浅谈
- 移动H5前端性能优化指南
- WEB扫描类产品测试--AppScan-WVS-WebRavor(7)
- 理解PHP及Zend Engine的线程安全模型(ZTS)
- spring单例注入init