您的位置:首页 > 编程语言 > C语言/C++

c++抽象工厂模式

2015-10-02 22:01 267 查看
// 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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: