Adapter模式
来源:互联网 发布:辐射4 室内光源优化 编辑:程序博客网 时间:2024/06/15 11:51
在软件系统设计和开发中,我们为了完成某项工作购买了一个第三方的库来加快开发。这就带来了一个问题:我们在应用程序中已经设计好了接口,与这个第三方提供的接口不一致,为了使得这些接口不兼容的类可以在一起工作,Adapter模式提供将一个类(第三方库)的接口转化为客户希望的接口。
Adapter模式的两种类别:类模式和对象模式
类模式:
Adapter.h:
#ifndef _ADAPTER_H_#define _ADAPTER_H_class Target{public:Target();virtual ~Target();virtual void Request();protected:private:};class Adaptee{public:Adaptee();~Adaptee();void SpecificRequest();protected:private:};class Adapter:public Target,private Adaptee{public:Adapter();~Adapter();void Request();protected:private:};#endif //~_ADAPTER_H_Adapter.cpp:
#include "Adapter.h"#include <iostream>Target::Target(){}Target::~Target(){}void Target::Request(){std::cout<<"Target::Request"<<std::endl;}Adaptee::Adaptee(){}Adaptee::~Adaptee(){}void Adaptee::SpecificRequest(){std::cout<<"Adaptee::SpecificRequest"<<std::endl;}Adapter::Adapter(){}Adapter::~Adapter(){}void Adapter::Request(){this->SpecificRequest();}main.cpp:
#include "Adapter.h"#include <iostream>using namespace std;int main(){Adaptee* ade = new Adaptee;Target* adt = new Adapter;adt->Request();return 1;}
对象模式:
Adapter.h:
//Adapter.h#ifndef _ADAPTER_H_#define _ADAPTER_H_class Target{public:Target();virtual ~Target();virtual void Request();protected:private:};class Adaptee{public:Adaptee();~Adaptee();void SpecificRequest();protected:private:};class Adapter:public Target{public:Adapter(Adaptee* ade);~Adapter();void Request();protected:private:Adaptee* _ade;};#endif //~_ADAPTER_H_Adapter.cpp:
//Adapter.cpp#include "Adapter.h"#include <iostream>Target::Target(){}Target::~Target(){}void Target::Request(){std::cout<<"Target::Request"<<std::endl;}Adaptee::Adaptee(){}Adaptee::~Adaptee(){}void Adaptee::SpecificRequest(){std::cout<<"Adaptee::SpecificRequest"<<std::endl;}Adapter::Adapter(Adaptee* ade){this->_ade= ade;}Adapter::~Adapter(){}void Adapter::Request(){_ade->SpecificRequest();}main.cpp:
#include "Adapter.h"#include <iostream>using namespace std;int main(){Adaptee* ade = new Adaptee;Target* adt = new Adapter(ade);adt->Request();return 1;}
0 0
- Adapter 模式 - Object Adapter
- Adapter 模式 - Class Adapter
- Adapter 模式 - Object Adapter
- Adapter 模式 - Class Adapter
- Adapter模式
- Adapter模式
- Adapter模式
- Adapter模式
- adapter模式
- Adapter模式
- Adapter模式
- Adapter 模式
- Adapter模式
- adapter模式
- Adapter模式
- Adapter模式
- Adapter模式
- Adapter模式
- 人品测试器(Activity之间互传数据)
- iOS KVO
- 学习C++ GUI Programming with Qt 4遇到的问题(1)
- LinearAllocator内存分配
- 地图服务标注显示乱码问题
- Adapter模式
- 黑马程序员-----反射(上)
- Linux inode
- 删除字符串中的指定字符
- 关于ArrayList的5道面试题
- JComponent 特性
- Android自定义标题栏
- 关于ArrayList的5道面试题
- 在指定文本中查询指定字符串