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

(二)原型模式

        原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。而不是通过new实例化

一、源型模式的定义

        原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。

📌 核心特点

  • 避免重复初始化操作(尤其是复杂对象)

  • 动态添加或删除产品类

  • 隐藏对象创建的细节

其UML类图如下所示:

类名作用
Client客户端,通过原型接口克隆对象
Prototype抽象原型接口,声明clone()方法
ConcretePrototypeA/B具体原型类,实现深拷贝逻辑

二、源型模式的适用场景

✅ 适用场景

  • 对象创建成本高(如数据库查询结果、复杂计算对象)

  • 需要动态配置的对象(如游戏中的敌人、武器生成)

  • 需要避免构造函数的约束(如深拷贝复杂对象)

❌ 不适用场景

  • 对象结构过于简单(直接new更高效)

  • 需要强类型控制的场景

2.1、基础实现

#include <iostream>
#include <memory>// 抽象原型类
class Prototype {
public:virtual ~Prototype() = default;virtual std::unique_ptr<Prototype> clone() const = 0; // 克隆方法virtual void print() const = 0;
};// 具体原型类A
class ConcretePrototypeA : public Prototype {
public:std::unique_ptr<Prototype> clone() const override {return std::make_unique<ConcretePrototypeA>(*this); // 调用拷贝构造}void print() const override {std::cout << "ConcretePrototypeA" << std::endl;}
};// 具体原型类B
class ConcretePrototypeB : public Prototype {
public:std::unique_ptr<Prototype> clone() const overr
http://www.xdnf.cn/news/937045.html

相关文章:

  • AI短视频创富营
  • Go语言系统监控实战:gopsutil库全面解析与应用
  • nginx部署
  • K8S认证|CKS题库+答案| 8. 沙箱运行容器 gVisor
  • 安装Openstack
  • 编程技巧(基于STM32)第二章 全功能按键非阻塞式实现按键单击、双击和长按
  • 【agent开发】VS Code连接WSL失败解决
  • 实验一:数据选择器实验
  • Go语言中的if else控制语句
  • DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
  • masm32汇编实现扫雷进程注入
  • 第1课、LangChain 介绍
  • 算法-数论
  • Java线程池核心原理与最佳实践
  • 永磁同步电机参数辨识算法--IPMSM拓展卡尔曼滤波全参数辨识
  • 73常用控件_QFormLayout的使用
  • 一个自动反汇编脚本
  • 深度学习入门Day3--鱼书学习(2)
  • 前端十种排序算法解析
  • 电压型PHY芯片MDI接口设计
  • 计算机网络笔记(二十九)——5.1运输层协议概述
  • QT线程同步 QReadWriteLock并发访问
  • xtp+ctp 交易系统接口简介
  • DAX权威指南9:DAX 查询分析与优化1
  • leetcode 386. 字典序排数 中等
  • Python爬虫实战:研究demiurge框架相关技术
  • 从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(十)
  • pgsql batch insert optimization (reWriteBatchedInserts )
  • Digital IC Design Flow
  • vue3:十六、个人中心-修改密码