设计模式之适配器模式-配不配?试试就知道!

一、适配器模式的概念

适配器模式是构造型模式之一,通过适配器模式可以改变已有类的接口形式,以适应客户端的调用需要,从而使原来不能兼容的类可以兼容在一起工作。

二、适配器模式使用场景

1、适用于将一个类的接口转换成客户端可以调用接口,使得原本由于接口不兼容的类可以兼容工作在一起。

三、适配器模式构建方法

1、目标接口类

提供客户端可以调用的接口。

2、适配者类

需要适配的类。

3、适配器类

将适配者类转换成目标接口类,该类是适配器模式的核心类。

四、适配器模式的示例

// AdapterPattern.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <string>
using namespace std;

// 目标接口类
class Voltage11V
{
public:
	void use11vPower()
	{
		cout << "use 11V power" << endl;
	}

private:

};

// 适配者类
class Voltage220V
{
public:
	void use220vPower()
	{
		cout << "use 220V power" << endl;
	}

private:

};

// 适配器类
class AdapterVol : public Voltage11V
{
public:
	AdapterVol(Voltage220V *pVol220V)
	{
		m_pVol220v = pVol220V;
	}

	void use11vPower()
	{
		cout << "适配器将220V电压转换成需要的11V电压" << endl;
		m_pVol220v->use220vPower();
	}
	

private:
	Voltage220V *m_pVol220v;
};

#define DELETE_PTR(p) {if(p!=nullptr){delete (p); (p)=nullptr;}}
int main()
{
	cout << "--------适配器模式----------" << endl;

	Voltage220V *pVol220V = new Voltage220V;
	AdapterVol *pAdapterVol = new AdapterVol(pVol220V);
	pAdapterVol->use11vPower();

	DELETE_PTR(pVol220V);
	DELETE_PTR(pAdapterVol);
    std::cout << "Hello World!\n";
	getchar();
}

运行结果:
在这里插入图片描述

五、适配器模式的优缺点

优点:

1、可以使两个没有关联的类能够一起运行工作。
2、提高类的复用。

缺点:

1、适配器使用过多的话容易造成系统的混乱,不建议过多使用。

能力有限,如有错误,多多指教。。。

posted @ 2020-02-18 21:20  ISmileLi  阅读(4)  评论(0编辑  收藏  举报