适配器模式:
又称变压器模式,它是把一个类的接口转换为客户端所期望了另一种接口,从而使原本因为接口不匹配而无法一起工作的两个类能一起工作。适用:
希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。增强代码的可维护性。
方法:
1.对象适配器:采用“对象组合”,耦合度低,推荐使用。
2.类适配器:多采用多继承,会使程序高耦合,一般不推荐使用。
一个简单的例子:
例如在系统中实现了点、线、正方形,现在要求实验一个圆,一般方法是建立一个circle类来继承Shape类,然后再去实现display,fill等函数,
但是如果代码里存在之前有人写的circle,也实现了display等方法,但是方法名不一样,那我们可以适配器模式!将circle类保持多态,
再在circle类里面使用已有的circle得方法。
适配器就是干这活的,在不兼容的东西之间搭建一座桥梁,让二者能很好的兼容在一起工作。UML图:
代码示例:
<span style="font-size:14px;">#include <iostream>
#include <vector>
using namespace std;
//别人写的circle类
class AnotherCircle
{
public:
void anotherDisplay()
{
cout<<"circle";
};
};
//shape,各个形状的基类
class Shape
{
public:
virtual void display()=0;
};
//Line
class Line:public Shape
{
public:
void display()
{
cout<<"Line";
};
};
//Point
class Point:public Shape
{
public:
void display()
{
cout<<"Point";
};
};
//Circle,对象适配器
class Circle
{
public:
void display()
{
anoterCircle.anotherDisplay();
};
private:
AnotherCircle anoterCircle;
};
int main(int argc, char *argv[])
{
Circle circle;
circle.display();
}</span>