声明:本博文篇幅短,适合review。
一、概念
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。一共有两类适配器模式:对象适配器模式和类适配器模式。类模式的 Adapter 采用继承的方式复用 Adaptee的接口,而在对象模式的 Adapter 中我们则采用组合的方式实现 Adaptee 的复用。
二、结构模式图
1、类适配器模式图
2、对象适配器模式图
三、例子
1、类适配器模式
class Target
{
public:
virtual void request(){}
};
class Adaptee
{
public:
void specificRequest(){}
};
class Adapter : public Target,private Adaptee
{
public:
void request()
{
this->specificRequest();
}
};
2、对象适配器模式
class Target
{
public:
virtual void request(){}
};
class Adaptee
{
public:
void specificRequest(){}
};
class Adapter : public Target
{
public:
void request()
{
_ade->specificRequest();
}
private:
Adaptee * _ade;
};
四、优缺点
1、优点
a、增加了类的透明性和复用性,将具体的实现封装在适配者类中。
b、符合开闭原则。
2、缺点
a、过多的使用适配器,会让系统非常零乱。