#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
class Camera
{
string m_sName;
public:
Camera(string str):m_sName(str){}
void TurnOn(){cout<<"打开camera:"<<m_sName<<endl;}
void TurnOff(){cout<<"关闭camera:"<<m_sName<<endl;}
void Do(){cout<<m_sName<<":拍照"<<endl;}
};
class Light
{
string m_sName;
public:
Light(string str):m_sName(str){}
void TurnOn(){cout<<"打开Light:"<<m_sName<<endl;}
void TurnOff(){cout<<"关闭Light:"<<m_sName<<endl;}
void Do(){cout<<m_sName<<":闪光"<<endl;}
};
class Sersor
{
string m_sName;
public:
Sersor(string str):m_sName(str){}
void TurnOn(){cout<<"打开Sersor:"<<m_sName<<endl;}
void TurnOff(){cout<<"关闭Sersor:"<<m_sName<<endl;}
void Do(){cout<<m_sName<<":发出传感"<<endl;}
};
class Beep
{
string m_sName;
public:
Beep(string str):m_sName(str){}
void TurnOn(){cout<<"打开Beep:"<<m_sName<<endl;}
void TurnOff(){cout<<"关闭Beep:"<<m_sName<<endl;}
void Do(){cout<<m_sName<<":发出声音"<<endl;}
};
class Facade
{
Camera pCamera;
Light pLight;
Sersor pSersor;
Beep pBeep;
public:
Facade(string str):pCamera(str),pLight(str),pSersor(str),pBeep(str)
{
pCamera.TurnOn();
pLight.TurnOn();
pSersor.TurnOn();
pBeep.TurnOn();
}
virtual ~Facade()
{
pCamera.TurnOff();
pLight.TurnOff();
pSersor.TurnOff();
pBeep.TurnOff();
}
void TakePicture()
{
pLight.Do();
pSersor.Do();
pCamera.Do();
pBeep.Do();
}
};
int main(int argc, char *argv[])
{
Facade* pFac = new Facade("Lily");
pFac->TakePicture();
delete pFac;
cout<<"-------------------------"<<endl;
pFac = new Facade("Poly");
pFac->TakePicture();
delete pFac;
cout<<"-------------------------"<<endl;
pFac = new Facade("Baby");
pFac->TakePicture();
delete pFac;
system("PAUSE");
return EXIT_SUCCESS;
}
Facade模式
最新推荐文章于 2024-03-16 08:00:00 发布