工厂模式(Factory Pattern)
是C++中最常用的一种设计模式,属于创建型模式
意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。
主要解决:主要解决接口选择的问题。
何时使用:我们明确地计划不同条件下创建不同实例时。
如何解决:让其子类实现工厂接口,返回的也是一个抽象的产品。
关键代码:创建过程在其子类执行。
优点:通过名称即可创建,接口简单
工厂文件
#pragma once
#include<iostream>
/*
Factory Pattern
*/
class Shape
{
public:
virtual void Draw() = 0;
};
class Circle:public Shape
{
public:
virtual void Draw()
{
std::cout << "Draw Circle" << std::endl;
}
};
class Rectangle :public Shape
{
public:
virtual void Draw()
{
std::cout << "Draw Rectangle" << std::endl;
}
};
class ShapeFactory
{
public:
Shape* CreatShapeObject(std::string Name)
{
if (Name == "Circle")
{
return new Circle;
}
else if (Name == "Rectangle")
{
return new Rectangle();
}
else
{
return nullptr;
}
}
private:
Shape *GetShapeObj;
};
Main函数
#include<iostream>
#include "FactoryPattern.h"
void TestFactoryPattern()
{
ShapeFactory *mBaseFactory = new ShapeFactory();
Shape *BaseShape = mBaseFactory->CreatShapeObject("Circle");
BaseShape->Draw();
BaseShape = mBaseFactory->CreatShapeObject("Rectangle");
BaseShape->Draw();
}
int main(int argc, char* argv[])
{
TestFactoryPattern();
return 0;
}