// AdapterPattern.cpp : 定义控制台应用程序的入口点。
//通过此例程了解设计模式里的“对象适配器模式”
//适配器模式:将一个类的接口转换为用户希望的另一个类的接口,适配器模式使得
//原本由于接口不兼容而不能再一起工作的类可以再一起工作--《大话设计模式》
//手机的电压一般在3-4.2v,
//而电视机的电压在220v--300v
//两者显示的电压不同,我们要利用适配器去覆盖手机的电压显示接口去显示电视机的电压行为
#include "stdafx.h"
#include <process.h>
#include <iostream>
using namespace std;
class CPhoneVoltage
{
public:
CPhoneVoltage()
{
}
virtual ~CPhoneVoltage()
{
}
virtual void ShowPhoneVoltage()const=0;
};
class CTvVoltage
{
public:
void ShowTvVoltage()
{
cout<<"220 V"<<endl;
}
};
//电视机电压适配器继承于手机类,同时在内部关联机一个电视电压对象,这样可以覆盖掉手机的接口,以实现显示电视机电压的行为
class CTvAdapter:public CPhoneVoltage
{
public:
CTvAdapter(CTvVoltage *pTvVo)
{
this->m_pTvVo=pTvVo;
}
void ShowPhoneVoltage() const
{
m_pTvVo->ShowTvVoltage();
}
private:
CTvVoltage *m_pTvVo;
};
int _tmain(int argc, _TCHAR* argv[])
{
cout<<"-------适配器模式测试案例---------------"<<endl<<endl;
CTvVoltage *pTvVo=new CTvVoltage();
CTvAdapter *pAdap=new CTvAdapter(pTvVo);
pAdap->ShowPhoneVoltage();
delete pAdap;
delete pTvVo;
pTvVo=NULL;
pAdap=NULL;
system("pause");
return 0;
}