您的位置:首页 > 其它

adapter模式

2016-06-30 16:03 232 查看
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;

}

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: