当前位置: 首页 > article >正文

C++设计模式-工厂模式

工厂方法模式(Factory Method Pattern)是创建型设计模式的一种,它通过定义一个创建对象的接口,但由子类决定实例化哪一个类,使得工厂方法模式的使用者不需要知道具体类的实例化过程。

这种模式的关键在于“工厂方法”是定义在抽象类中,并由具体的子类来实现的。通过工厂方法,客户端代码不需要直接通过 new 关键字来实例化对象,而是通过工厂来获取对象。

工厂方法模式的结构

  1. Product:定义工厂方法所创建的产品对象的接口。
  2. ConcreteProduct:实现 Product 接口的具体类,代表具体的产品。
  3. Creator(工厂类):声明一个工厂方法,返回一个 Product 类型的对象。
  4. ConcreteCreator(具体工厂类):实现工厂方法,返回具体的 Product 对象。

例子:图形绘制工厂

假设我们要开发一个图形绘制程序,用户可以选择绘制不同形状的图形。我们使用工厂方法模式来创建不同的形状。

1. 定义产品接口(抽象类)
#include <iostream>
#include <memory>

// 抽象产品类:Shape
class Shape {
   
public:
    virtual void draw() = 0;  // 纯虚函数:绘制图形
    virtual ~Shape() {
   }
};
2. 具体产品类(不同类型的图形)
// 具体产品类:Circle(圆形)
class Circle : public Shape {
   
public:
    void draw() override {
   
        std::cout << "Drawing a Circle" << std

http://www.kler.cn/a/545786.html

相关文章:

  • 什么是服务的雪崩、熔断、降级的解释以及Hystrix和Sentinel服务熔断器的解释、比较
  • OpenWebUI使用DeepSeek R1满血版,DeepSeek R1 API调用
  • 《C++ Primer》学习笔记(一)
  • 【目标检测json2xml】label从COCO格式json文件转VOC格式xml文件
  • 关于post和get的请求参数问题
  • Vue 3 30天精进之旅:Day 22 - 构建和部署
  • windows 打开22端口
  • DeepSeek自然语言处理(NLP)基础与实践
  • dify.ai 配置链接到阿里云百练等云厂商的 DeepSeek 模型
  • 真正通俗易懂的Langchain入门学习(二)
  • Kotlin 扩展函数与内联函数
  • DeepSeek处理自有业务的案例:让AI给你写一份小众编辑器(EverEdit)的语法着色文件
  • 微信小程序组件间通信与传值的全面解析
  • 【Kubernetes】常用命令全解析:从入门到实战(中)
  • FastAPI 高并发与性能优化
  • CSS实现中心放大动画
  • 【AI大模型】Ollama部署本地大模型DeepSeek-R1,交互界面Open-WebUI,RagFlow构建私有知识库
  • github上创建person access token
  • 21道关于Vue3的面试题及其解析
  • 网络安全|网络安全学习方法