#include <iostream>
using namespace std;
class Television
{
public :
virtual void play()=0;
};
class HaierTelevision: public Television
{
public :
void play(){
cout<< "海尔电视机播放中..." <<endl;
}
};
class TCLTelevision: public Television
{
public :
void play(){
cout<< "TCL电视机播放中..." <<endl;
}
};
class AirConditioner
{
public :
virtual void changetemperature()=0;
};
class HaierAirConditioner: public AirConditioner
{
public :
void changetemperature(){
cout<< "海尔空调温度改变中..." <<endl;
}
};
class TCLAirConditioner: public AirConditioner
{
public :
void changetemperature(){
cout<< "TCL空调温度改变中..." <<endl;
}
};
class EFactory
{
public :
virtual Television * produceTelevision()=0;
virtual AirConditioner * produceAirConditioner()=0;
};
class HaierFactory: public EFactory
{
public :
Television * produceTelevision(){
return new HaierTelevision;
}
AirConditioner * produceAirConditioner(){
return new HaierAirConditioner;
}
};
class TCLFactory: public EFactory
{
public :
Television * produceTelevision(){
return new TCLTelevision;
}
AirConditioner * produceAirConditioner(){
return new TCLAirConditioner;
}
};
int main()
{
EFactory * hairfactory= new HaierFactory ();
Television * haierTelevision=hairfactory->produceTelevision();
haierTelevision->play();
AirConditioner * haierAirConditioner=hairfactory->produceAirConditioner();
haierAirConditioner->changetemperature();
delete haierTelevision;
delete haierAirConditioner;
delete hairfactory;
EFactory * tclfactory=new TCLFactory();
Television *TCLTelevision=tclfactory->produceTelevision();
TCLTelevision->play();
AirConditioner * TCLAirConditioner=tclfactory->produceAirConditioner();
TCLAirConditioner->changetemperature();
delete TCLTelevision;
delete TCLAirConditioner;
delete tclfactory;
}