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

(一)创建型设计模式:4、原型模式(Prototype Pattern)

目录

1、原型模式的含义

2、C++实现原型模式的简单实例


1、原型模式的含义

通过复制现有对象来创建新对象,而无需依赖于显式的构造函数或工厂方法,同时又能保证性能。

The prototype pattern is a creational design pattern in software development. It is used when the type of objects to create is determined by a prototypical instance, which is cloned to produce new objects. This pattern is used to: avoid subclasses of an object creator in the client application, like the factory method pattern does.

Specify the kind of objects to create using a prototypical instance, and create new objects by copying this prototype.
(使用原型实例指定将要创建的对象类型,通过复制这个实例创建新的对象。)

2、C++实现原型模式的简单实例


#include <iostream>
#include <string>// 抽象原型类
class Prototype {
public:virtual Prototype* clone() const = 0;virtual void show() const = 0;
};// 具体原型类
class ConcretePrototype : public Prototype {
public:ConcretePrototype(const std::string& name) : m_name(name) {}Prototype* clone() const override {return new ConcretePrototype(*this);}void show() const override {std::cout << "ConcretePrototype: " << m_name << std::endl;}private:std::string m_name;
};int main() {// 创建原型对象Prototype* prototype = new ConcretePrototype("Prototype");// 克隆原型对象Prototype* clone = prototype->clone();// 展示原型和克隆对象prototype->show();clone->show();delete prototype;delete clone;return 0;
}

在上述示例中,我们定义了一个抽象原型类(Prototype),其中包含了两个纯虚函数:clone()用于克隆对象,show()用于展示对象。然后,我们实现了具体的原型类(ConcretePrototype),它继承自抽象原型类,并实现了抽象原型类中的纯虚函数。

在主函数中,我们首先创建一个原型对象(ConcretePrototype),然后通过调用clone()方法来克隆原型对象,得到一个新的对象。最后,我们分别展示原型对象和克隆对象的信息。

http://www.lryc.cn/news/119401.html

相关文章:

  • 【算法学习】高级班九
  • 数据安全加固:深入解析滴滴ES安全认证技术方案
  • Typescript第九/十章 前后端框架,命名空间和模块
  • LLM - argparse 解析脚本参数
  • 谈一谈在两个商业项目中使用MVI架构后的感悟
  • ApacheCon - 云原生大数据上的 Apache 项目实践
  • Git 代码分支规范
  • ATFX汇评:美7月通胀率数据基本符合预期,美指仍无法站稳103关口
  • 系统架构设计专业技能 · 软件工程(一)【系统架构设计师】
  • C语言 指针的运算
  • 【JAVA基础】- 同步非阻塞模式NIO详解
  • dingding机器人
  • 6.6 实现卷积神经网络LeNet训练并预测手写体数字
  • Django路由Router
  • 蜜蜂路线 P2437
  • 无脑——010 复现yolov8 使用yolov8和rt detr 对比,并训练自己的数据集
  • 如何给Google Chrome增加proxy
  • 设计模式——原型模式
  • Spring框架中的Bean生命周期
  • async和await修饰符
  • vivado tcl创建工程和Git管理
  • 田间农业数字管理系统-高标准农田建设
  • 【网络安全】等保测评系列预热
  • 解决: git拉取报错 git 未能顺利结束 (退出码 1)
  • 【深度学习中的批量归一化BN和层归一化LN】BN层(Batch Normalization)和LN层(Layer Normalization)的区别
  • 开发一个RISC-V上的操作系统(六)—— 中断(interrupt)和异常(exception)
  • 心跳跟随的心形灯(STM32(HAL)+WS2812+MAX30102)
  • 5. 服务发现
  • 算法备案背后的原因:确保技术透明度与公正
  • Linux centos 常用命令 【持续更新】