设计模式3:抽象工厂模式【创建型】

来源:互联网 发布:为知笔记网页版登录 编辑:程序博客网 时间:2024/05/21 23:19
#include <iostream>using namespace std;//struct ISingleCore{public:virtual ~ISingleCore() { }virtual void Produce() = 0;};class CSingleCoreA : public ISingleCore{public:virtual ~CSingleCoreA() { }virtual void Produce() { cout<<"Single Core A"<<endl; }};class CSingleCoreB : public ISingleCore{public:virtual ~CSingleCoreB() { }virtual void Produce() { cout<<"Single Core B"<<endl; }};//struct IMultiCore{public:virtual ~IMultiCore() { }virtual void Produce() = 0;};class CMultiCoreA : public IMultiCore{public:virtual ~CMultiCoreA() { }virtual void Produce() { cout<<"Multi Core A"<<endl; }};class CMultiCoreB : public IMultiCore{public:virtual ~CMultiCoreB() { }virtual void Produce() { cout<<"Multi Core B"<<endl; }};//struct IFactory{public:virtual ~IFactory() { }virtual ISingleCore* CreateSingleCore() = 0;virtual IMultiCore*  CreateMultiCore() = 0;};class CFactoryA : public IFactory{public:virtual ~CFactoryA() { }virtual ISingleCore* CreateSingleCore() { return new CSingleCoreA(); }virtual IMultiCore*  CreateMultiCore() { return new CMultiCoreA(); }};class CFactoryB : public IFactory{public:virtual ~CFactoryB() { }virtual ISingleCore* CreateSingleCore() { return new CSingleCoreB(); }virtual IMultiCore*  CreateMultiCore() { return new CMultiCoreB(); }};//void main(){//CFactoryA factoryA;ISingleCore *pSingleCoreA = factoryA.CreateSingleCore();pSingleCoreA->Produce();delete pSingleCoreA;IMultiCore *pMultiCoreA = factoryA.CreateMultiCore();pMultiCoreA->Produce();delete pMultiCoreA;//CFactoryB factoryB;ISingleCore *pSingleCoreB = factoryB.CreateSingleCore();pSingleCoreB->Produce();delete pSingleCoreB;IMultiCore *pMultiCoreB = factoryB.CreateMultiCore();pMultiCoreB->Produce();delete pMultiCoreB;}