设计模式-简单工厂模式

文章目录

  • 简单工厂设计模式
    • 什么是简单工厂?
    • 为什么使用简单工厂
    • 工厂模式代码实现
    • 简单工厂优缺点优点:

简单工厂设计模式

学习视频

什么是简单工厂?

  • 简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式。
  • 通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。

为什么使用简单工厂

  • 减少客户程序对类创建过程的依赖
  • 简单工厂实现步骤
    1.提供一个工厂类:负责实现创建所有实例的内部逻辑。可被外界直接调用,创建所需的产品对象。
    2.提供一个抽象产品类:简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。
    3.提供一个具体产品类:简单工厂模式所创建的具体实例对象
    设计模式-简单工厂模式_第1张图片

工厂模式代码实现

#include
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;
}

简单工厂优缺点优点:

优点

  • 帮助封装
    • 实现组件封装,面向接口编程
  • 解耦合
    • 客户端和具体实现类的解耦合

缺点:

  • 可能增加客户端的复杂度
  • 不方便扩展子工厂

你可能感兴趣的:(设计模式,设计模式,简单工厂模式)