// ConsoleApplication1.cpp : Defines the entry point for the console application.
// 这是违背开放封闭原则的:增加产品需修改工厂类
#include "stdafx.h"
#include <iostream>
//#include "Factory.h"
using namespace std;
class Mobile
{
public:
virtual void display() = 0;
};
class AndroidMobile:public Mobile
{
public:
void display() {cout<<"this is the androidMobile"<<endl;}
};
class IOSMobile:public Mobile
{
public:
void display() {cout<<"this is the iosMobile"<<endl;}
};
class PAD
{
public:
virtual void display() = 0;
};
class IOSPAD:public PAD
{
public:
void display() {cout<<"this is the iosPAD"<<endl;}
};
class AndroidPAD:public PAD
{
public:
void display() {cout<<"this is the androidPAD"<<endl;}
};
class Factory
{
public:
virtual Mobile* CreateMobile() = 0;
virtual PAD* CreatePAD() = 0;
};
class IOSFactory:public Factory
{
public:
Mobile* CreateMobile();
PAD* CreatePAD();
};
Mobile* IOSFactory::CreateMobile()
{
return new IOSMobile;
}
PAD* IOSFactory::CreatePAD()
{
return new IOSPAD;
}
class AndroidFactory:public Factory
{
public:
Mobile* CreateMobile();
PAD* CreatePAD();
};
Mobile* AndroidFactory::CreateMobile()
{
return new AndroidMobile;
}
PAD* AndroidFactory::CreatePAD()
{
return new AndroidPAD;
}
int _tmain(int argc, _TCHAR* argv[])
{
Factory* pAndroidFactory = new AndroidFactory;
Mobile* pMobile = pAndroidFactory->CreateMobile();
pMobile->display();
delete pAndroidFactory;
pAndroidFactory = 0;
delete pMobile;
pMobile = 0;
Factory* pPADFactory = new IOSFactory;
PAD* pIOSPad = pPADFactory->CreatePAD();
pIOSPad->display();
Mobile* pIOSMobile = pPADFactory->CreateMobile();
pIOSMobile->display();
delete pPADFactory;
pPADFactory = 0;
delete pIOSPad;
pIOSPad = 0;
delete pIOSMobile;
pIOSMobile = 0;
getchar();
return 0;
}
// 这是违背开放封闭原则的:增加产品需修改工厂类
#include "stdafx.h"
#include <iostream>
//#include "Factory.h"
using namespace std;
class Mobile
{
public:
virtual void display() = 0;
};
class AndroidMobile:public Mobile
{
public:
void display() {cout<<"this is the androidMobile"<<endl;}
};
class IOSMobile:public Mobile
{
public:
void display() {cout<<"this is the iosMobile"<<endl;}
};
class PAD
{
public:
virtual void display() = 0;
};
class IOSPAD:public PAD
{
public:
void display() {cout<<"this is the iosPAD"<<endl;}
};
class AndroidPAD:public PAD
{
public:
void display() {cout<<"this is the androidPAD"<<endl;}
};
class Factory
{
public:
virtual Mobile* CreateMobile() = 0;
virtual PAD* CreatePAD() = 0;
};
class IOSFactory:public Factory
{
public:
Mobile* CreateMobile();
PAD* CreatePAD();
};
Mobile* IOSFactory::CreateMobile()
{
return new IOSMobile;
}
PAD* IOSFactory::CreatePAD()
{
return new IOSPAD;
}
class AndroidFactory:public Factory
{
public:
Mobile* CreateMobile();
PAD* CreatePAD();
};
Mobile* AndroidFactory::CreateMobile()
{
return new AndroidMobile;
}
PAD* AndroidFactory::CreatePAD()
{
return new AndroidPAD;
}
int _tmain(int argc, _TCHAR* argv[])
{
Factory* pAndroidFactory = new AndroidFactory;
Mobile* pMobile = pAndroidFactory->CreateMobile();
pMobile->display();
delete pAndroidFactory;
pAndroidFactory = 0;
delete pMobile;
pMobile = 0;
Factory* pPADFactory = new IOSFactory;
PAD* pIOSPad = pPADFactory->CreatePAD();
pIOSPad->display();
Mobile* pIOSMobile = pPADFactory->CreateMobile();
pIOSMobile->display();
delete pPADFactory;
pPADFactory = 0;
delete pIOSPad;
pIOSPad = 0;
delete pIOSMobile;
pIOSMobile = 0;
getchar();
return 0;
}