简单工厂模式
简单记录一下自己写的简单工厂模式demo,因为自己也是刚学设计模式。个人认为因为简单工厂模式就是一个工厂根据不同需求来实例化不同的对象,实际上就是一个类去管理不同的类,这样我们写代码就不要重复实例化很多类,下面给出自己写的demo
factorymodeHead.h
#include <iostream>
using namespace std;
class CountryBass
{
public:
CountryBass(string name) : m_name(name) {}
virtual ~CountryBass();
virtual void showMyCountry() = 0;
string m_name;
};
//中国
class China :public CountryBass
{
public:
China(string name) :CountryBass(name) {}
virtual ~China();
virtual void showMyCountry();
};
//英国
class Uk :public CountryBass
{
public:
Uk(string name) :CountryBass(name) {}
virtual ~Uk();
virtual void showMyCountry();
};
//美国
class Us :public CountryBass
{
public:
Us(string name) :CountryBass(name) {}
virtual~Us();
virtual void showMyCountry();
};
//工厂类
class FactoryClass
{
public:
CountryBass* showEachCountry(int type);
};
factorymodeHead.cpp
#include "factorymodeHead.h"
void China::showMyCountry()
{
cout << "我是" <<m_name<< endl;
}
China::~China()
{
}
Uk::~Uk()
{
}
void Uk::showMyCountry()
{
cout << "我是" << m_name << endl;
}
Us::~Us()
{
}
void Us::showMyCountry()
{
cout << "我是" << m_name << endl;
}
CountryBass* FactoryClass::showEachCountry(int type)
{
switch (type)
{
case 1:
return new China("中国");
case 2:
return new Uk("英国");
case 3:
return new Us("美国");
default:
break;
}
}
CountryBass::~CountryBass()
{
}
main.cpp
#include<iostream>
#include "factorymodeHead.h"
using namespace std;
int main()
{
FactoryClass* myFactory = new FactoryClass();
CountryBass* china = myFactory->showEachCountry(1);
CountryBass* uk = myFactory->showEachCountry(2);
CountryBass* us = myFactory->showEachCountry(3);
china->showMyCountry();
uk->showMyCountry();
us->showMyCountry();
delete china;
delete uk;
delete us;
return 0;
}
往各位大神能指出我的误区,以便于我更好去理解这个简单工厂模式。周五了,下班走人,下个继续学习工厂模式下的其他两个模式。