C++ 适配器模式
来源:互联网 发布:淘宝匹克篮球鞋有假吗 编辑:程序博客网 时间:2024/06/07 16:21
定义
结构
理解
1. Target是供Client调用的抽象基类。
2. Adaptee是需要适配的类(适配者类)。Adaptee的方法(SpecificRequest)与Target的方法(Request)是不兼容的。
3. Adapter是适配器类。完成对Target和Adaptee的接口适配工作。Adapter重新实现Request方法,内部隐藏了调用Adaptee不兼容方法(SpecificRequest)的细节。
4. 类适配器是通过继承类适配者类(Adaptee)实现的。类适配器实现客户类所需要的方法(SpecificRequest)。当客户对象调用适配器类(Adapter)方法的时候,适配器内部调用它所继承的适配者的方法。
5. 对象适配器包含一个适配器者的引用,与类适配器相同,对象适配器也实现了客户类需要的接口。当客户对象调用对象适配器的方法的时候,对象适配器调它所包含的适配器者实例的适当方法。对象组合方式,允许一个Adapter适配多个Adaptee。
要点
1. 适配器模式适用于:
你想使用一个已经存在的类,而它的接口不符合你的需求。
你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。
(仅适用于对象适配器)你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口。
2. C++使用类适配器时,Adapter类使用public方式继承Target类,并使用private方式继承Adaptee类。这样,Adapter是Target子类型,但不是Adaptee子类型。如此这般,推荐使用对象适配器方式。
3. 适配器模式与桥接(Bridge)模式的区别。桥接模式的目的是将接口部分与实现分离,从而使它们能相对独立的改变;桥接是设计阶段行为。适配器模式是对已有接口的改变,使得功能相同但接口不兼容的类桥接在一起。
应用
源码中使用对象适配器方式,这样的好处是,适配器可以有多个适配者,譬如我要兼容美式插座,只需要新增美式插座CUsOutlet,并且将CUsOutlet作为CCnOutletAdapter的成员即可。
源码
#include <iostream>
#include <string>
using namespace std;
//适配器基类Target, 中式插座
class CCnOutlet
{
public:
};
//适配者Adaptee, 英式插头
class CEnOutlet
{
public:
};
//适配器Adapter. 使用对象适配器方式
class CCnOutletAdapter : public CCnOutlet
{
public:
protected:
};
int main()
{
}
- 【C++】Chapter13:适配器模式
- Objective C--适配器模式
- Objective C 适配器模式
- 适配器模式(C++)
- 适配器模式(C++)
- 适配器模式C语言实现
- 适配器模式实例(C#)
- C#--设计模式之适配器模式
- 适配器模式(Adapter)(C#)
- 适配器及适配器模式
- 适配器及适配器模式
- 适配器模式(类适配器)
- 适配器模式(默认适配器)
- 适配器模式(对象适配器)
- 适配器模式-类适配器
- 适配器模式-对象适配器
- 接口模式 - 1.1 适配器模式 --代码实现(C#)
- 乐在其中设计模式(C#) - 适配器模式(Adapter Pattern)
- 关于mysql中添加新用户名的方法(权限)
- 第九章 Java多线程机制 05_线程同步_3
- Android的Socket通信编程实例
- ASP.NET性能优化之构建自定义文件缓存
- ACE 日志系统1CallBack 到文件。
- C++ 适配器模式
- myeclipse导入项目出现乱码 --问题的解决
- Windows Server 2012 RTM强势出击
- 新手-JAVA-线程-总结
- 在Linux下访问windows共享文件并创建中文文件的方法(转载自http://netslyz.blog.51cto.com/1006247/386412)
- 电阻式触摸屏的基本结构和驱动原理
- 关于DNS的别名,你真的理解了吗?
- orcad16.3下载
- HDU 4303 Hourai Jeweled bt树形统计