常见设计模式解析和实现(C++)Adapt模式
来源:互联网 发布:淘宝运营简历模板下载 编辑:程序博客网 时间:2024/04/30 22:34
作用:将一个类的接口转换成客户希望的另一个接口。Adapt模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
UML示意图
1) 采用继承原有接口类的方式
2)采用组合原有接口类的方式
解析:
Adapt模式其实就是把完成同样一个功能但是接口不能兼容的类桥接在一起使之可以在一起工作,这个模式使得复用旧的接口成为可能。
实现:
Adapt模式有两种实现的方法,一种是采用继承原有接口的方法,一种是采用组合原有接口类的方法,这里采用的是第二种实现方法
1) Adapt.h
- class Target
- {
- public:
- Target(){}
- virtual ~Target(){}
- virtual void Request() = 0;
- };
- // 与被Adapt对象提供不兼容接口的类
- class Adaptee
- {
- public:
- Adaptee(){}
- ~Adaptee(){}
- void SpecialRequest();
- };
- // 进行Adapt的类,采用聚合原有接口类的方式
- class Adapter : public Target
- {
- public:
- Adapter(Adapter* pAdaptee);
- virtual ~Adapter();
- virtual void Request();
- private:
- Adaptee* m_pAdatee;
- };
(2)Adapt.cpp
- #include "Adapt.h"
- #include <iostream>
- void Adaptee::SpecialRequest()
- {
- std::cout << "SpecialRequest of Adaptee\n";
- }
- void Adapter::Adapter(Adaptee *pAdaptee) : m_pAdaptee(pAdaptee)
- {
- }
- Adapter::~Adapter()
- {
- delete m_pAdaptee;
- m_pAdaptee = NULL;
- }
- void Adapter::Request()
- {
- std::cout << "Request of Adapter\n";
- m_pAdapter->SpecialRequest();
- }
(3)main.cpp
- #include "Adapter.h"
- #include "stdlib.h"
- int main()
- {
- Adaptee *pAdaptee = new Adaptee;
- Target *pTarget = new Adapter(pAdaptee);
- pTarget->Request();
- delete pTarget;
- system("pause");
- }
0 0
- 常见设计模式解析和实现(C++)Adapt模式
- 常见设计模式解析和实现(C++)Adapt模式
- 常见设计模式的解析和实现(C++)---Adapt模式
- 常见设计模式的解析和实现(C++)之六-Adapt模式
- 常见设计模式的解析和实现(C++)之六-Adapt模式
- 常见设计模式的解析和实现(C++)之六-Adapt模式
- 常见设计模式的解析和实现(C++)之六-Adapt模式
- 设计模式的解析和实现(C++)之六-Adapt模式
- 常见设计模式解析和实现(C++)FlyWeight模式
- 常见设计模式解析和实现(C++)FlyWeight模式
- 常见设计模式解析和实现(C++)Prototype模式(原型模式)
- 常见设计模式解析和实现(C++)Prototype模式(原型模式)
- 设计模式--Adapt模式
- 常见设计模式的解析和实现(C++)
- 常见设计模式的解析和实现(C++)之九—Decorator模式
- 设计模式之 adapt
- 常见设计模式的解析和实现
- 常见设计模式的解析和实现(C++)之二十-Visitor模式
- Android开发之ListView实现不同品种分类分隔栏的效果(非ExpandableListView实现)
- 关于java 注解中元注解Inherited的使用详解
- hdu1715 大菲波数(高精度)
- 常见设计模式解析和实现(C++)Prototype模式(原型模式)
- Spring RMI配置多个服务
- 常见设计模式解析和实现(C++)Adapt模式
- 常见设计模式解析和实现(C++)FlyWeight模式
- AVD可以运行android应用无法运行
- spring mvc4使用及json 日期转换解决方案
- Unity学习小结4 - NGUI的几点性能问题
- 单片机Proteus虚拟仿真
- 多线程编程
- c++学习笔记之 文件的读写操作
- [Django]中建立数据库视图