简单工厂模式
使用一个单独的类(工厂)来控制其他类的实例化。
实现:制造火车和飞机(一个工厂,一个工厂生产多个产品)
#include "stdafx.h"
#include<iostream>
#include<string>
using namespace std;
//抽象产品类 制造的抽象类 拥有纯虚函数的类为抽象类
class Make
{
public:
//纯虚函数 在基类中仅仅给出声明 在派生类中实现
virtual void make() = 0;
};
//具体产品类 制造火车的类 继承自制造抽象类
class MakeTrain:public Make
{
public:
void make()
{
cout << "我可以制造火车!" << endl;
}
};
//具体产品类 制造飞机的类 继承自制造抽象类
class MakePlane:public Make
{
public:
void make()
{
cout << "我可以制造飞机!" << endl;
}
};
//具体工厂类 将客户端和具体的制造类分离 降低耦合度
class Factory
{
private:
MakeTrain train;
MakePlane plane;
public:
void make(string something)
{
if (something == "train")
{
train.make();
}
else if (something == "plane")
{
plane.make();
}
//用switch更好 但c++不支持switch(string)
}
};
//客户端
int main()
{
Factory factory;
//客户想要制造什么 只需要告诉工厂就行了
factory.make("train");
factory.make("plane");
return 0;
}
类图:(纯虚函数用斜体表示)
优点:工厂类中包