文章目录
- 简单工厂设计模式
- 什么是简单工厂?
- 为什么使用简单工厂
- 工厂模式代码实现
- 简单工厂优缺点优点:
简单工厂设计模式
学习视频
什么是简单工厂?
- 简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式。
- 通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
为什么使用简单工厂
- 减少客户程序对类创建过程的依赖
- 简单工厂实现步骤
1.提供一个工厂类:负责实现创建所有实例的内部逻辑。可被外界直接调用,创建所需的产品对象。
2.提供一个抽象产品类:简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。
3.提供一个具体产品类:简单工厂模式所创建的具体实例对象
工厂模式代码实现
#include<iostream>
using namespace std;/*
1.提供一个工厂类:产生不同产品
2.提供一个抽象产品类:运算符类+负责运算,得到结果
3.提供一个具体产品类:具体运算符
*/// 抽象类
class OperationBase {
public:/* 抽象类中通用的属性 */int m_num1;int m_num2;virtual int getAns() { return -1; }
};// 具体产品类
class AddOperation : public OperationBase {
public:int getAns() {return m_num1 + m_num2;}
};class SubOperation :public OperationBase {
public:int getAns() {return m_num1 - m_num2;}
};// 工厂类
class OperationFatory {
public:static OperationBase *getOperation(char ch);
};OperationBase *OperationFatory::getOperation(char ch) {switch (ch){case '+':return new AddOperation;case '-':return new SubOperation;default:break;}
}int main() {// 工厂类不需要实例化 父类指针接收子类对象OperationBase* addOper = OperationFatory::getOperation('+');addOper->m_num1 = 2;addOper->m_num2 = 3;cout << addOper->getAns() << endl;system("pause");return 0;
}
简单工厂优缺点优点:
优点
- 帮助封装
- 实现组件封装,面向接口编程
- 解耦合
- 客户端和具体实现类的解耦合
缺点:
- 可能增加客户端的复杂度
- 不方便扩展子工厂