文章目录
- 简单工厂设计模式
- 什么是简单工厂?
- 为什么使用简单工厂
- 工厂模式代码实现
- 简单工厂优缺点优点:
简单工厂设计模式
学习视频
什么是简单工厂?
- 简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式。
- 通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
为什么使用简单工厂
- 减少客户程序对类创建过程的依赖
- 简单工厂实现步骤
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;
}
简单工厂优缺点优点:
优点
- 帮助封装
- 实现组件封装,面向接口编程
- 解耦合
- 客户端和具体实现类的解耦合
缺点:
- 可能增加客户端的复杂度
- 不方便扩展子工厂