简单工厂模式
- 一、简单工厂模式
- 二、C++代码示例
- 总结
一、简单工厂模式
工厂模式是一种常见的设计模式,它用于创建对象,但将对象的创建过程抽象出来,以便在不暴露对象的具体实现细节的情况下创建不同类型的对象。
二、C++代码示例
#include <iostream>
#include <memory>
/*
简单工厂模式:通过参数控制可以生产任何产品
优点:简单粗暴,直观易懂
缺点:1、所有东西生产在一起,产品太多会导致代码量庞大
2、开闭原则遵循(开放拓展、关闭修改)的不是太好,要新增产品就必须修改工厂方法
*/
//创建一个抽象基类
class Fruit
{
public:
//构建一个纯虚函数
virtual void name() = 0;
};
//创建一个子类,继承基类
class Apple : public Fruit
{
public:
void name() override
{
std::cout << "我是一个苹果\n";
}
};
class Banana : public Fruit
{
public:
void name() override
{
std::cout << "我是一个香蕉\n";
}
};
class FruitFactory
{
public:
// 静态成员函数,返回值为一个智能指针,函数名为create
static std::shared_ptr<Fruit> create(const std::string &name)
{
if(name == "苹果")
{
return std::make_shared<Apple>(); //创建Apple类型的对象
}
else
{
return std::make_shared<Banana>();
}
}
};
int main()
{
Apple a; //实例化对象
a.name();
std::shared_ptr<Fruit> fruit = FruitFactory::create("苹果");
fruit->name();
fruit = FruitFactory::create("香蕉");
fruit->name();
return 0;
}
总结
简单工厂模式的优缺点:
优点:简单粗暴,直观易懂
缺点:1、所有东西生产在一起,产品太多会导致代码量庞大
2、开闭原则遵循(开放拓展、关闭修改)的不是太好,要新增产品就必须修改工厂方法