//
// main.cpp
// Design_Pattern
//
// Created by simon on 2017/7/24.
// Copyright © 2017年 simon. All rights reserved.
//
//多态工厂模式
#include <iostream>
using namespace std;
class SingleCore
{
public:
virtual void show()=0;
};
class SingleCore_A:public SingleCore
{
public:
void show(){cout<<"Single A"<<endl;}
};
class SingleCore_B:public SingleCore
{
public:
void show(){cout<<"Single B"<<endl;}
};
class MultiCore
{
public:
void virtual show()=0;
};
class MultiCoreA:public MultiCore
{
public:
void show(){cout<<"Multi A"<<endl;}
};
class MultiCoreB:public MultiCore
{
public:
void show(){cout<<"Multi B"<<endl;}
};
class CoreFactory
{
public:
virtual SingleCore* CreateSingleCore()=0;
virtual MultiCore* CreateMultiCore()=0;
};
class CoreFactoryA:public CoreFactory
{
public:
SingleCore* CreateSingleCore(){return new SingleCore_A;}
MultiCore* CreateMultiCore(){return new MultiCoreA;}
};
class CoreFactoryB:public CoreFactory
{
public:
SingleCore* CreateSingleCore(){return new SingleCore_B;}
MultiCore* CreateMultiCore(){return new MultiCoreB;}
};
int main(int argc,char** argv)
{
CoreFactoryA a;
SingleCore* single=a.CreateSingleCore();
single->show();
CoreFactoryB b;
MultiCore* multi=b.CreateMultiCore();
multi->show();
}