设计模式——简单工厂模式

简单工厂模式

什么是简单工厂

简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式。

通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。

为什么使用简单工厂

减少客户程序对类创建过程的依赖

简单工厂实现步骤

1.提供一个工厂类

简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。

2.提供一个抽象产品类

简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。

3.提供一个具体产品类

简单工厂模式所创建的具体实例对象

在这里插入图片描述

简单工厂实现代码

#include <iostream>
#include <string>
using namespace std;
//产品抽象父类
class Operation 
{
   	

public:
	double m_leftVlaue;
	double m_rightValue;
	virtual double GetResult() = 0;
};
//具体产品实现类
class AddOperation:public Operation
{
   
	double GetResult()
	{
   
		return m_leftVlaue + m_rightValue;
	}
};
class SubOperation :public Operation 
{
   
	double GetResult()
	{
   
		return m_leftVlaue - m_rightValue;
	}
};

class MulOperation :public Operation
{
   
	double GetResult()
	{
   
		return m_leftVlaue * m_rightValue;
	}
};

class DivOperation :public Operation
{
   
	double GetResult()
	{
   
		return m_leftVlaue / m_rightValue;
	}
};
//工厂类
class  OperatorFactory 
{
   
public:
	static  Operation* createOperation(char c) 
	{
   
		switch (c) 
		{
   
		case '+':
			return new AddOperation;
			break;
		case '-':
			return new SubOperation;
			break;
		case '*':
			return new MulOperation;
			break;
		case '/':
			return new DivOperation;
			break;
		}
	}
};
int main() 
{
   
	Operation* operation = OperatorFactory::createOperation('+');
	operation->m_leftVlaue = 1;
	operation->m_rightValue = 2;
	cout << operation->GetResult() << endl;
	return 0;
}

简单工厂优缺点

优点

  • 帮助封装

    实现组件封装,面向接口编程

  • 解耦合

    客户端和具体实现类的解耦合

缺点

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

相关推荐

  1. 设计模式简单工厂模式

    2024-01-17 16:34:02       16 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-17 16:34:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-17 16:34:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-17 16:34:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-17 16:34:02       20 阅读

热门阅读

  1. Centos常用命令整理,常用的比较全了

    2024-01-17 16:34:02       30 阅读
  2. MyISAM 和 InnoDB 如何选择?

    2024-01-17 16:34:02       28 阅读
  3. iTMSTransporter上传ipa文件

    2024-01-17 16:34:02       35 阅读
  4. 设计模式之多线程分工模式--- 生产-消费者模式

    2024-01-17 16:34:02       37 阅读
  5. flink源码分析 - yaml解析

    2024-01-17 16:34:02       26 阅读
  6. PyTorch GPU利用率为0%(很低)

    2024-01-17 16:34:02       35 阅读
  7. c语言中指针作函数参数

    2024-01-17 16:34:02       34 阅读
  8. 免费chartGPT网站汇总

    2024-01-17 16:34:02       22 阅读
  9. 向量数据库如何解决大语言模型的“幻觉”问题

    2024-01-17 16:34:02       29 阅读