c++之原型模式

突破编程_C++_设计模式(原型模式) C++ 设计模式:原型模式 阅读详情

原型模式

定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象

它属于创建者模式,其实就是通过一个对象再创建另外一个对象的副本,但是不需要知道任何创建对象所需要的细节。

优点:

1、当一个对象经过一段时间后,它内部的状态已经发生了变化,这时候,程序的其他业务需要当前状态下 的对象去进行其他的操作。这时候如果直接在new一个新的对象出来,它的状态就对应不上了。这时候采用原型模式,就可以获取一个状态一致的对象。

2、有时候创建对象时,构造函数需要的参数却很多,但是我们又不完全的知道每个参数的具体含义,就可以使用原型模式来创建一个新的对象,从而不必去理会创建的过程。

3、恰当的使用原型模式,可以减少代码量,提高程序的效率。

代码:

#include <iostream>

using namespace std;

//原型
class Prototype
{
public:
	Prototype(int n) :m_num(0)
	{
		m_num = n;
	}
	int getNum()
	{
		return m_num;
	}
	virtual Prototype* clone() = 0;

private:
	int m_num;
};

//具体原型实例A
class PrototypeA :public Prototype
{
public:
	PrototypeA(int num) :Prototype(num)
	{
	}
	Prototype* clone()
	{
		return new PrototypeA(*this);
	}
};

//具体原型实例B
class PrototypeB :public Prototype
{
public:
	PrototypeB(int num) :Prototype(num)
	{
	}
	Prototype* clone()
	{
		return new PrototypeB(*this);
	}
};

//客户端
int main()
{
	PrototypeA *proA = new PrototypeA(10);
	cout << "proA-num=" << proA->getNum() << " 对象&=" << proA << endl;

	PrototypeA *newproA = static_cast<PrototypeA*>(proA->clone());
	cout << "newproA-num=" << newproA->getNum() <<" 对象&="<< newproA << endl;

	PrototypeB *newproB = static_cast<PrototypeB*>(proA->clone());
	cout << "newproB-num=" << newproB->getNum() << " 对象&=" << newproB << endl;
	
	if (proA)
	{
		delete proA;
		proA = nullptr;
	}
	if (newproA)
	{
		delete newproA;
		newproA = nullptr;
	}
	if (newproB)
	{
		delete newproB;
		newproB = nullptr;
	}

	return 0;
}

 

Qt C++ prototype(原型模式或者克隆模式) prototype.h #pragma once #include #include #include class CProtoTypeBase { public: virtual CProtoTypeBase* clone() = 0; virtual void printAuthor() = 0; virtual void printGroup() = 阅读详情

相关推荐

C++设计模式——Prototype Pattern原型模式

原型模式是一种创建型设计模式,它允许通过克隆已有对象来创建新对象,从而无需调用显式的实例化过程。原型模式的设计,使得它可以创建一个与原型对象相同或类似的新对象,同时又可以减少对象实例化操作产生的性能开销,使得创建对象的操作更加便捷,它减少了大量不必要的重复工作,并提高了系统性能。当创建对象的操作比较复杂和耗时的时候,原型模式则提供了一个更加高效和简单的创建对象的模式,它可以更加快速的创建对象的副本,且不需要依赖对象的某些实例化步骤,它避免了使用传统的new关键字创建对象实例时的复杂构造过程。

程序员与背包客_CoderZ 2212

C++设计模式(10)——原型模式

C++原型模式

伍粟的博客 1707

C++ 原型模式

原型模式(Prototype Pattern)是一种创建型设计模式,允许一个对象再创建另外一个可定制的对象,而无需知道任何创建的细节。

青春不老,奋斗不止! 9975

设计模式 - 原型模式

设计模式 - 原型模式

touchingnotyet的博客 366

【C++实战㊷】C++ 原型模式实战:从概念到高效应用

本文聚焦 C++ 原型模式实战,先阐释其通过复制现有对象创建新对象的定义,说明对象创建成本高、需批量建相似对象等适用场景,介绍克隆方法及深浅克隆核心差异。接着讲解浅克隆、深克隆实现及原型管理器设计,分享深克隆递归实现、与工厂模式结合等实战技巧。最后以报表模板克隆系统为例,展示原型模式应用及效率测试,为开发者提供实用参考。

邓邓子的博客 1330

C++设计模式之原型模式

主要介绍了C++设计模式之原型模式,本文讲解了什么是原型模式、为什么要使用原型模式、代码实例等内容,需要的朋友可以参考下

C++ 设计模式之原型模式

实现原型模式需要给【原型对象】声明⼀个克隆⽅法,执⾏该⽅法会创建⼀个当前类的新对象,并将原始对象中的成员变量复制到新⽣成的对象中,⽽不必实例化。如果⼀个对象的创建过程⽐较复杂时(⽐如需要经过⼀系列的计算和资源消耗),那每次创建该对象都需要消耗资源,⽽通过原型模式就可以复制现有的⼀个对象来迅速创建/克隆⼀个新对象,、并且可以通过克隆避免重复初始化⼯作的场景时可以考虑使⽤原型模式,在克隆对象的时候还可以动态地添加或删除原型对象的属性,创造出相似但不完全相同的对象,提⾼了灵活性。,⽽不是从头开始创建。

K1_uestc的博客 1576

Modbus4J vs EasyModbus4J:哪个Java库更适合你的工业项目?

本文深入对比了Java领域两大Modbus通信库Modbus4J与EasyModbus4J。Modbus4J设计稳健、类型安全,适合复杂业务集成;EasyModbus4J基于Netty,在高并发场景下性能更优。文章从架构、性能、API及生产环境多维度分析,为工业物联网项目选型提供决策依据。

weixin_28475533的博客 310

C++设计模式——原型模式(Prototype Pattern)

C++设计模式——原型模式(Prototype Pattern) 微信公众号:幼儿园的学霸 目录 文章目录C++设计模式——原型模式(Prototype Pattern)目录定义代码示例普通指针方式实现智能指针方式实现总结为什么需要原型模式优缺点 定义 Specify the kinds of Objects to create using a prototypical instance, and create new objects by copying this prototype. 用原型实例指

leonardohaig的博客 1635

飞腾D2000 BIOS编译避坑指南:PCIE拆分、S3电源与过温保护配置详解

本文详细解析飞腾D2000 BIOS编译中的关键配置技巧,包括PCIE拆分模式优化、S3电源管理适配及过温保护设置。通过实战案例和参数调优建议,帮助开发者规避常见陷阱,充分发挥国产高性能计算平台的硬件潜力。特别针对BIOS编译过程中的隐蔽问题提供解决方案。

weixin_33704234的博客 534

SMIC Memory配置与Library Compiler实战:从lib到db的高效转换

本文详细介绍了SMIC Memory Compiler的配置要点与使用Library Compiler将.lib文件高效转换为.db文件的完整流程。文章深入解析了关键配置参数对性能和面积的影响,并提供了从交互式操作到自动化脚本的实战指南,帮助数字芯片设计工程师顺利完成存储器模型的生成与集成,确保Design Compiler能正确调用。

weixin_28314575的博客 335

c++原型模式(Prototype Pattern)

每个原型类实现自己的克隆方法,从而确保了对象的正确复制。

qq_57283958的博客 656

开源PACS系统Orthanc(DICOM服务器)配置

PACS(Picture Archiving and Communication System)是医学影像的数字化存储、检索和传输系统,用于管理和存储医学图像和相关信息,如放射学、核医学、超声、病理学等各种医学影像。PACS系统通过数字化技术取代了传统的胶片方式,使医疗机构能够更高效地存储、传输和查看医学图像,从而提高了医疗图像的管理和工作流程。

qq_42231043的博客 6249

C++ 设计模式:原型模式(Prototype Pattern)

C++ 设计模式:原型模式(Prototype Pattern)

冀晓武的博客 1551

永磁同步电机矢量控制(十一)——基于损耗模型的PMSM效率优化策略

本文深入探讨了永磁同步电机(PMSM)基于损耗模型的效率优化策略,详细分析了铜损和铁损的构成与建模方法,并提出了最小损耗控制策略的实现方案。通过与传统MTPA控制的对比,展示了在不同工况下的效率提升效果,同时讨论了工程实现中的关键问题与解决方案,为PMSM的高效运行提供了理论支持和实践指导。

7z8x2c4v6b9的博客 231

1、JMP脚本编程全面指南:从基础到高级应用

本博客全面介绍了JMP脚本编程的各个方面,从JMP基础和JSL入门,到数据类型、数据结构、编程方法、数据表操作、图形与三维场景脚本,再到应用程序创建与扩展功能。内容涵盖脚本工具使用、常见任务实现、兼容性说明及未来发展趋势,旨在帮助用户掌握JMP脚本语言的强大功能,提升数据分析的自动化与定制化能力。适合从初学者到高级用户的深入学习与实践参考。

flink9streamer的博客 266

原型模式(Prototype Pattern) C++

上一节:建造者模式(Builder Pattern)C++ 原型模式(Prototype Pattern)是一种创建型设计模式,其思想是基于一个原型实例创建对象的副本,从而避免新实例创建时的标准方式(如使用new关键字)。在需要创建的对象与原有对象类似或者创建过程较为复杂时,使用原型模式可以更高效地复制对象。假设我们正在开发一个游戏,其中包含大量的怪物。这些怪物分为几种类型,比如“地精”、“龙”等。每种怪物都有自己的属性(如生命值、攻击力等),但同种类型的怪物在初始状态下这些属性是相同的。在游戏中,我们需要

yaoyaohyl的博客 1004

ABAP 大规模数据并行处理实战,六套 Parallel Processing Framework 如何选,性能调优真正该盯住什么

如果今天真的面对那份执行 14 个小时的生产报表,我不会马上把原来的 Loop 改成 50 个aRFC。我会先用 SAT、ST12、SQL Monitor 和 HANA 侧工具确认时间到底花在哪里。如果 90% 时间其实消耗在一条低效 SQL 上,Parallel Processing 只是让 50 个 Worker 同时执行那条低效 SQL,数据库会比原来更痛苦。应该先把串行逻辑本身优化到合理水平。该做 Set-based Processing 的地方先交给 HANA。该避免SELECT。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 149

【c++设计模式08】创建型6:原型模式(Prototype Pattern)

原型模式定义了一个原型接口,该接口用于复制现有对象以创建新对象,从而避免了昂贵的构建过程。使用原型模式,我们可以根据现有对象创建新对象,同时保持对象的类型和状态。浅拷贝:将一个对象复制后,基本数据类型的变量都会重新创建,而引用类型,指向的还是原对象所指向的。深拷贝:将一个对象复制后,不论是基本数据类型还有引用类型,都是重新创建的。简单来说,就是深复制进行了完全彻底的复制,而浅复制不彻底。clone明显是深复制,clone出来的对象是是不能去影响原型对象的。

junxuezheng的博客 1581

【Matlab】多旋翼无人机视觉伺服跟踪控制程序

本文介绍了基于Matlab的多旋翼无人机视觉伺服跟踪控制程序开发方法。该系统采用视觉感知、坐标转换、伺服控制和仿真验证四个核心模块,通过HOG+SVM目标检测、Shi-Tomasi特征提取和PID双闭环控制算法实现动态目标跟踪。详细阐述了相机标定、目标检测、坐标转换及伺服控制等关键环节的Matlab实现代码,并进行了仿真验证。结果表明该系统在±0.1m的跟踪精度下可实现100Hz的实时处理,适用于室内外复杂场景。文章还提出了工程应用中的优化建议,为无人机视觉伺服系统的开发提供了完整的技术方案。

unber的博客 505

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

大话设计模式——原型模式(C++简历实现)

C++写过拷贝构造函数和赋值运算符重载的应该都会

Ben_OnceMore 953

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

C++原型模式:Prototype Pattern

当创建给定类的实例的过程很昂贵或很复杂时,就使用原型模式。原型模式的核心思想是,通过拷贝指定的“原型实例(对象)”,创建跟该对象一样的新对象。简单理解就是“克隆指定对象”。这里提到的“原型实例(对象)”,就是被克隆的对象,它的作用就是指定要创建的对象种类。

lichengyang的博客 174

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

C++创建型模式之原型模式

通过原型设计模式,我们可以轻松地复制现有角色,避免了重复的构造代码,并且可以根据需要对克隆的角色进行微调。这种模式在复杂的游戏场景中非常有用,特别是在需要创建多个相似角色时。相似性:原型模式和拷贝构造函数都用于对象的复制,避免了重复的构造代码。不同点:原型模式是一种设计模式,通过clone()方法实现对象复制;拷贝构造函数是 C++ 语言特性,通过实现对象复制。原型模式提供了更灵活的对象复制机制。

捕鲸叉的专栏 2989

原型模式C++

原型模式(Prototype Pattern)是一种创建型设计模式,它通过复制(克隆)现有对象来创建新对象,而不是通过new关键字直接实例化。这种模式适合需要频繁创建相似对象的场景,可以避免重复初始化的开销,同时简化对象创建过程。

melonbo的专栏 569

C++创建型模式-原型模式

参考文献: 【1】

灰太狼的小秘密 1961

我所理解的设计模式(C++实现)——原型模式(Prototype Pattern)

解决的问题: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。这个其实和C++的拷贝构造函数的作用是一致的,实际上就是动态抽取当前对象运行时的状态。 类图结构:      客户(Client)角色:客户类提出创建对象的请求。 抽象原型(Prototype)角色:这是一个抽象角色,通常由一个C#接口或抽象类实现。此角色给出所有的具体原型类所需的接口。在C#中,抽象

十八道胡同的博客专栏 1万+
上一篇: c++之状态模式
下一篇: c++之备忘录模式
Qt上位机开发
Qt上位机开发 领域专家: C/C++技术领域 领域专家: C/C++技术领域
博客等级 码龄9年 9664粉丝 178原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值