adapter模式
来源:互联网 发布:社交网络 电影天堂 编辑:程序博客网 时间:2024/05/19 11:49
Adapter
一. 意图
将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作.
二.适用性
1. 想使用一个已经存在的类,而接口不符合你的需求
2. 想创建一个可以复用的类,而该类与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作.
3. (仅使用与对象Adapter)想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配他们的接口.对象适配器可以适配它的父类接口.
三.注意事项
适配器模式最好在详细设计阶段不要考虑它,它不是为了解决还处在开发阶段的问题,而是解决正在服役的项目问题,没有一个系统分析师会在做详细设计的时候考虑使用适配器模式,这个模式使用的主要场景是扩展应用中。类适配器是类间继承,对象适配器是对象的合成关系,也可以说是类的关联关系。
四.代码
#include<iostream>
usingnamespacestd;
//adaptermode
classCTarget
{
public:
virtualvoidRequest()
{
cout<<"CTarget::Request"<<endl;
}
};
classCAdaptee
{
public:
voidSpecificRequest()
{
cout<<"CAdaptee::SpecificRequest"<<endl;
}
};
//类适配器,public继承获得接口继承的效果,private继承获得实现继承的效果
classCAdapterClass:publicCTarget,privateCAdaptee
{
public:
virtualvoidRequest()
{
this->SpecificRequest();
}
};
//对象适配器,继承Target类,采用组合的方式实现Adaptee的复用
classCAdapterObject:publicCTarget
{
public:
virtualvoidRequest()
{
m_adaptee.SpecificRequest();
}
private:
CAdapteem_adaptee;
};
intmain()
{
cout<<"HelloWorld!"<<endl;
//类模式adapter
CTarget*target=newCTarget();
target->Request();
//类适配器
CTarget*adapterClass=newCAdapterClass();
adapterClass->Request();
//对象适配器
CTarget*adapterObject=newCAdapterObject();
adapterObject->Request();
return0;
}
- 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模式
- SparkSQL(下)--Spark实战应用
- python下的socket常用方法举例
- myecplise连接Spark集群接口封装
- CentOS 下JDK安装
- hash 图像检索方法汇总
- adapter模式
- 关于高并发问题
- 有问题可以邮箱交流:MachineLP@163.com
- 判断相册中是否存在某张照片
- pull解析(原始xml文件放到assets中)
- 22个方法全面提升邮件送达率
- 【Java】聊天过滤 DFA算法的Java实现
- ScrollView嵌套ListView和Gridview冲突问题的最优解决方案
- 2.转动的地球shader