配饰器模式
将一个类的接口转换成客户希望的另外一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
代码:
// accessory.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
class V5
{
public:
virtual void useV5() = 0;
};
//目前只有v220的类 没有v5
class V220
{
public:
void useV220() {
cout << "使用了220v的电压" << endl;
}
};
//定义一个中间配饰器
class Adapter : public V5
{
public:
Adapter(V220 * v220)
{
this->v220 = v220;
}
~Adapter() {
if (this->v220 != NULL) {
delete this->v220;
}
}
virtual void useV5() {
v220->useV220(); //调用需要另外的方法
}
private:
V220 *v220;
};
class iPhone
{
public:
iPhone(V5 *v5)
{
this->v5 = v5;
}
~iPhone()
{
if (this->v5 != NULL) {
delete this->v5;
}
}
//充电的方法
void charge()
{
cout << "iphone手机进行了充电" << endl;
v5->useV5();
}
private:
V5*v5;
};
int main()
{
iPhone *phone = new iPhone(new Adapter(new V220));
phone->charge();
return 0;
}