[设计模式]原型模式(Prototype)

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

1.  意图

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

2. 结构与参与者


3. 代码示例

#include<iostream>
#include <vector>
#include <string>
using namespace std;

class Prototype //抽象基类 
{ 
private:
	string m_strName;
public: 
	Prototype(string strName):m_strName(strName){}
	Prototype() { m_strName = " "; }
	void Set_name(string strName){m_strName=strName;}
	void Show() 
	{
		cout<<m_strName<<endl;
	}
	virtual Prototype* Clone() = 0 ; 
} ; 

// class ConcretePrototype1 
class ConcretePrototype1 : public Prototype 
{ 
public: 
	ConcretePrototype1(string strName) : Prototype(strName){}
	ConcretePrototype1(){}

	virtual Prototype* Clone() 
	{ 
		ConcretePrototype1 *p = new ConcretePrototype1() ; 
		*p = *this ; //深复制对象 
		return p ; 
	} 
} ; 

// class ConcretePrototype2 
class ConcretePrototype2 : public Prototype 
{ 
public: 
	ConcretePrototype2(string strName) : Prototype(strName){}
	ConcretePrototype2(){}
	
	virtual Prototype* Clone() 
	{ 
		ConcretePrototype2 *p = new ConcretePrototype2() ; 
		*p = *this ; //深复制对象 
		return p ; 
	} 
} ; 

//客户端
int main()
{
	string str="xiaowang";
	ConcretePrototype1* test = new ConcretePrototype1("小王");
	ConcretePrototype1* test2 = (ConcretePrototype1*)test->Clone();
	ConcretePrototype2* test3 = (ConcretePrototype2*)test2->Clone();
	test2->Set_name(str);
	test->Show();
	test2->Show();
	test3->Show();
	return 0;
}



自动驾驶仿真(二)—— 基于PreScan与Simulink的联合仿真 自动驾驶仿真软件介绍二—— PreScan与Simulink联合仿真1. Prescan仿真软件2. Prescan与Simulink联合仿真2. 1 Prescan和matlab软件安装2. 2 联合仿真配置3. 联合仿真实例3.1 一辆不按法规行驶的小车3.2 另一辆的正常行驶的小车3.3 视觉辅助摄像机3.4 传感器检测4. 系列学习视频教程5. 参考学习的书目教材 上一篇博文简单介绍了Carsim与Simulink联合仿真,接着这篇就再继续简单介绍另一款自动驾驶仿真软件Prescan,并且简单做个P 阅读详情

相关推荐

Rasa Core开发指南

文章目录1. Rasa Core简介1.1 Rasa Core消息处理流程1.2 安装Rasa Core2. Dialogue模型训练2.1 Story样本数据2.2 Domain2.2.0 intents2.2.1 actions2.2.2 templates2.2.3 entities2.2.4 slots3 .训练和使用对话模型3.1 训练对话模型3.2 使用对话模型4. 搭建CustomA...

老蒋也疯狂 1万+

设计模式-原型模式 Prototype Pattern

通常,如果需要快速复制对象并且对象的创建成本较高,或者需要创建多个相似但不完全相同的对象,原型模式是一个更好的选择。原型模式(Prototype Pattern)是一种创建型设计模式,它允许你通过复制现有的对象来创建新的实例,而不是通过新建的方式来构造。使用原型模式可以提高对象创建的效率,降低系统的资源消耗,并有助于实现对象的快速复制和灵活管理。然而,需要注意的是,原型模式可能会增加内存消耗,并且在处理包含引用类型成员的对象时需要特别小心,以避免浅拷贝导致的问题。

wesigj的博客 1699

电力电子技术(13)——大功率可控整流电路

目录引言2.6.1 带平衡电抗器的双反星形可控整流电路电路结构的特点接平衡电抗器的原因平衡电抗器使得两组三相半波整流电路同时导电的原理分析谐波分析2.6.2 多重化整流电路概述原理目标1)移相多重联结2)多重联结电路的顺序控制3重晶闸管整流桥顺序控制带平衡电抗器的双反星形可控整流电路(是多重化整流电路的重要形式之一)的特点:适用于低电压、大电流的场合。多重化整流电路的特点:绕组的极性相反的目的:消除直流磁通势如图所示,虽然两组相电流的瞬时值不同,但是平均电流相等而绕组的极性相反,所以直流安匝(电流*匝数)互

weixin_45589295的博客 1万+

设计模式-04原型模式Prototype Pattern

原型模式是一种创建型设计模式,通过复制已有对象来创建新对象,避免代码依赖具体类。它适用于需要动态创建对象、减少类层次结构或避免重复初始化复杂对象的场景。实现方式包括浅克隆(仅复制基本类型和引用)和深克隆(递归复制所有引用对象),后者可通过序列化或手动实现。示例代码展示了文档对象的克隆,浅克隆会共享引用导致原始对象被修改,而深克隆则完全独立,确保对象状态的完整性。

d3y1`5 81_09 885

Android13系统设置第三方app为设备所有者

DevicePolicyManagerService.java文件所在目录是frameworks/base,记得将包类名换成自己app的。2. 将拷贝到系统分区下的两个xml文件继续通过init.rc服务拷贝到data/system/目录下并修改权限。1. 拷贝设备所有者和设备管理器两个对应的xml文件到系统分区。

wzh048503的博客 2502

逻辑漏洞:水平越权、垂直越权靶场练习

水平越权和垂直越权是组织中常见的管理问题,指的是员工在组织中所拥有的权力和责任超出其职位所应具备的范围。 水平越权是指员工在同一级别的职位上超越了其同事的权力和责任范围,通常表现为某个员工在团队中承担了过多的任务或权力,导致其他同事感到不公平或不满。 垂直越权则是指员工在组织中超越了其职位等级的权力和责任范围,通常表现为员工在没有得到上级批准的情况下做出决策或行动,可能会导致组织内部的混乱和冲突。

qq_68163788的博客 2470

23种设计模式之原型模式(Prototype Pattern)

本篇文章将23种设计模式中的单例设计模式,此篇文章为一天学习一个设计模式系列文章,后面会分享其他模式知识。

小威的博客 2万+

Android 9.0 系统framework关于忘记开机锁屏密码进不去系统桌面清除锁屏密码问题的解决

在9.0的系统rom定制化开发中,在一些产品中带锁屏密码的功能中,系统默认是滑动解锁,但是客户会设置锁屏密码,在某些时候会 忘掉锁屏密码,导致需要进入恢复出厂设置然后才能进入系统桌面,这样就导致系统的保存的资料都丢失了,所以需要要求提供接口 在下拉状态栏中或者系统服务中在忘记锁屏密码后不恢复出厂设置的情况下,可以清除锁屏密码,接下来就来实现功能

安卓兼职framework和app工程师的博客 615

设计模式|原型模式(Prototype Pattern)

原型模式(Prototype Pattern)是一种创建型设计模式,其核心思想是通过复制现有对象来创建新对象,而无需显式地指定它们的类。这种模式通常用于当对象的创建成本较高,或者对象初始化过程比较复杂时。

weixin_44435110的博客 1420

【TC3xx芯片】TC3xx芯片UCB详解

TC3xx芯片UCB详解

qq_36056498的博客 1万+

资产会计 Transaction Type 与业务交易的 Post to Affiliated Company 不一致导致的 AAPO176:成因剖析与修复指引

本文解析了SAP资产会计中常见的"AAPO176"错误提示,指出当交易类型(TType)与业务交易(Business Transaction)的"关联公司过账"(Post to Affiliated Company)标志不一致时,系统会拒绝过账。作者详细说明了该标志的作用机制,并提供了四种解决方案:修正交易类型使用、匹配正确的业务交易、调整系统配置或建立映射关系。文章还通过实际案例展示了配置错误对集团合并报表的影响,并附带了用于检查配置一致性的ABAP脚本。该错误通常

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

设计模式之原型模式(Prototype Design Pattern)

原型模式,可以理解为克隆模式,就是对一个已创建的对象进行克隆。这个对象必须提供克隆的方法。 我们先看一个简单的例子: //实现Cloneable ,重写clone方法,使用对象提供克隆的能力 public class Article implements Cloneable { public Article(){ System.out.println("初始化"); } public Article clone() { System.out.

xjj1314的专栏 330

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Java设计模式 六 原型模式 (Prototype Pattern)

原型模式是解决对象重复创建问题的强大工具,特别适合那些创建成本高或需要快速生成对象的场景。根据具体需求,可以选择浅拷贝或深拷贝的实现方式。尽管实现上可能会稍复杂,但它提供了灵活性和高效性,是值得掌握的重要设计模式之一。

空 1116

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

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

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

秒懂设计模式之原型模式(Prototype Pattern)

概述 原型模式属于创建型模式,所以它是描述如何创建对象的模式。顾名思义, 先搞一个原型对象出来,然后在这个原型对象的基础上修修补补弄出一个新对象来。 使用场景 当一个对象的构建代价过高时。例如某个对象里面的数据需要访问数据库才能拿到,而我们要多次构建这样的对象。 当构建的多个对象,均需要某种原始状态时,就可以使用原型对象保存这种原始状态,其他对象基于原型对象来修改。 《江城子·密州出猎》 ----------------------------------------------------------

ShuSheng007的程序人生 7466

原型模式(Prototype Design Pattern)及代码实现

什么是 原型模式? 原型模式 指 把一个通过类 示例化后的 对象作为 原型,对此原型 进行 复制,得到一个新的对象,这个新对象 和原型 的 属性等完全相同,并且 用户 可以在此新对象 基础上 进行改变(新增或修改属性); 现实生活中的例子: 1.克隆羊 多莉,对 原有 羊 进行克隆 后 得到一个 完全相同的 新对象(多莉); 2.书籍的 不同版本; 在第一版书籍 出版后,发现一些问题, 需要出版第二版,这时 作者 不会从头开始 一页一页的 写书等等, 作者会在第一版的 进行克隆 生成 第二版..

rgc_520_zyl的博客 579

23种设计模式——原型模式 (Prototype Pattern)详解

本文介绍了23种经典设计模式之——原型模式 (Prototype Pattern)的说明及使用

Meteors.的博客 1001

【设计模式】原型模式(Prototype Pattern)详解

摘要: 原型模式通过复制已有对象(原型)来创建新对象,避免重复初始化带来的性能开销。核心思想是“拷贝”而非重新构造,适用于创建成本高、对象差异小的场景。Java通过Cloneable接口支持原型模式,但需注意浅拷贝(仅复制对象本身)与深拷贝(复制对象及引用对象)的区别。优点包括提高性能、简化创建过程,缺点在于实现复杂且可能破坏封装性。典型应用包括Spring的prototype作用域、游戏角色复制等。使用时应权衡对象创建成本,避免过度设计。

经天纬地,格物致理 921

设计模式之原型模式(Prototype Pattern)

意图:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。主要解决:在运行期建立和删除原型。何时使用:1、当一个系统应该独立于它的产品创建,构成和表示时。2、当要实例化的类是在运行时刻指定时,例如,通过动态装载。3、为了避免创建一个与产品类层次平行的工厂类层次时。4、当一个类的实例只能有几个不同状态组合中的一种时。建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便一些。如何解决:利用已有的一个原型对象,快速地生成和原型对象一样的实例。

weixin_42294716的博客 858

Java设计模式——原型模式【ProtoType Pattern】

Java设计模式、原型模式

scorpio的博客 494

设计模式(Design pattern)之原型模式(Prototype Pattern)

摘要:原型模式是一种创建型设计模式,通过克隆现有对象来创建新对象,避免重复初始化开销。文章展示了Java实现原型模式的两种方式:浅复制(Shallow Copy)仅复制基本类型字段,而深复制(Deep Copy)通过序列化机制完整复制对象及其引用对象。代码示例包含毕业证案例,演示了如何实现Cloneable接口进行浅复制,以及通过对象序列化实现深复制。深复制通过将对象写入文件再读取的方式,确保所有引用对象都被完整复制,解决了浅复制中引用对象共享的问题。

RR1335 之代码才是动力源 235

详解Java设计模式之原型模式(Prototype Pattern)

在软件系统中,有时候需要多次创建某一类型的对象,为了简化创建过程,可以只创建一个对象,然后再通过克隆的方式复制出多个相同的对象,这就是原型模式的设计思想。

Elegance never goes out of fashion 9048

设计模式六:原型模式(Prototype Pattern)

原型模式是一种创建对象的设计模式。它允许我们通过复制一个现有对象来创建新的对象,而无需知道其具体实现细节。在使用原型模式时,我们首先创建一个原始对象,然后根据需要复制该对象,以获得新创建的对象。原型模式的主要思想是基于对象的复制。通过使用原型模式,我们可以避免直接实例化对象,从而提高性能和代码灵活性。此外,原型模式还可以用于创建复杂的对象结构,因为它允许我们在创建对象时使用已经存在的对象作为蓝图。

qq_40537587的博客 834

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

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

冀晓武的博客 1551

Java 设计模式——原型模式(Prototype Pattern)

Java 设计模式——原型模式(Prototype Pattern) 一.基础概念 1.定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 2.主要概念 Java中的克隆方法: 浅拷贝:对基本数据类型进行值传递,对引用数据类型进行引用传递般的拷贝,此为浅拷贝 深拷贝:对基本数据类型进行值传递,对引用数据类型,创建一个新的对象,并复制其内容,此为深拷贝 二: 具体实现 1.浅...

a158s168的博客 456

设计模式总结之Prototype Pattern(原型模式)

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

cooldragon的专栏 5964
上一篇: [设计模式]工厂方法模式(Factory Method)
下一篇: [设计模式]单例模式(Singleton)
sicofield
博客等级 码龄18年 169粉丝 169原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值