原型模式

克隆以后我就成了你——探究原型模式 孙悟空拔一根毫毛就可以变出好多一模一样的孙悟空!!!中国的克隆技术其实是世界领先的! 即便Jungle读书少,Jungle也清晰地记得中学生物课本上提到过的克隆羊“多利”。虽然多利寿命不长,但它的出现对“克隆(Clone)”技术意义重大。克隆,直观说就是从原有生物体上取体细胞,然后无性繁殖出有完全相同基因的个体或种群。这么说来中国的克隆技术其实是世界领先的,因为孙悟空拔一根毫毛变出许多一模一... 阅读详情

        原型模式就是从一个对象再创建另一个可定制的对象,而且不需要知道任何创建的细节。书中的定义为:原型模式(Prototype),用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

        个人理解为定义一个抽象接口Prototype,然后在其中定义一个纯虚函数Clone。再定义一个创建原型的类concretePrototype来定义属性并实现Clone方法,克隆自身并返回新的对象。

        其中由于C++ 中没有ICloneable接口,所以我们可以通过拷贝构造函数去实现对象的拷贝,这里又涉及到浅拷贝和深拷贝。深拷贝和浅拷贝的定义可以简单理解成:如果一个类拥有资源(堆,或者是其它系统资源),当这个类的对象发生复制过程的时候,这个过程就可以叫做深拷贝,反之对象存在资源,但复制过程并未复制资源的情况视为浅拷贝。也就是浅拷贝并没有创建资源,而是新的对象指针指向原来的对象,并且公用空间,而深拷贝就是创建新的空间,并把要拷贝对象的值拷贝过来。

       下面为实践的代码:

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;

class Prototype
{
	public: 
	   virtual Prototype *Clone()=0; 
};

class resume : public Prototype
{
	public:
		resume(){}
		resume(string name)
		{
		  this->name = name;
		}

		resume(resume &re)
		{
			this->name = re.name;
			this->sex = re.sex;
			this->age = re.age;
			this->timeArea = re.timeArea;
			this->company = re.company;
		}

	    void SetPersonalInfo(string sex,string age)
		{
			this->sex = sex;
			this->age = age;
		}

		void SetWorkExperience(string timeArea,string company)
		{
			this->timeArea = timeArea;
			this->company = company;
		}

		void Display()
		{
		   cout<<name<<" "<<sex<<" "<<age<<endl;
		   cout<<"工作经历:"<<timeArea<<" "<<company<<endl;
		}

		Prototype *Clone()
		{
		   return new resume(*this);
		}

	private:
		string name;
		string sex;
		string age;
		string timeArea;
		string company;
};

int _tmain(int argc, _TCHAR* argv[])
{
	resume *a = new resume("dada");
	a->SetPersonalInfo("man","23");
	a->SetWorkExperience("2008-2012","Microsoft");

	resume *b =(resume *)a->Clone();
	b->SetPersonalInfo("man","23");
	b->SetWorkExperience("2010-2012","Microsoft");

	a->Display();
	b->Display();

	system("pause");
	delete a;
	delete b;
	return 0;
}

         原型模型主要的优点是:在一般初始化的信息不发生变化的情况下,隐藏了对象创建的细节。

         但是C#中说的可以不执行构造函数而动态地获得对象运行的状态这一点我就有点迷糊了?C++中也能这样吗?要是这样真的可以大大提高性能,尤其是在一些构造函数执行时间较长的情况下。

Java 原型模式 文章目录原型模式原型模式Demo使用原型模式的好处浅克隆和深克隆浅克隆深克隆 原型模式 原型模式属于创建型模式,用原型实例指定待创建对象的类型,并且通过复制这个原型来创建新的对象!(但是学姐是不可复制的哦,只有我这里有,还不赶快关注我的 Java精选频道 ) 原型模式Demo 下了几次棋,学弟把学姐征服了多少次?这里是以次为单位,我们需要把这个枢纽创建出来,为下棋计单位! /** * 枢纽:... 阅读详情

相关推荐

机器视觉学习(七)—— 卷积、边缘和滤波器

卷积运算、垂直边缘与水平边缘、滤波器

歆歆~黯了 2740

JAVA设计模式——【原型模式】

原型模式 克隆羊问题 现在有一只羊 tom,姓名为: tom,年龄为:1,颜色为:白色,请编写程序创建和 tom羊属性完全相同的10只羊。 传统方式解决克隆羊问题 思路分析(图解) 代码演示: public class Sheep { private String name; private int age; private String color; public Sheep(String name, int age, String color) { super(); .

龍弟-idea的博客 7956

windows10下Boost的安装与初试

https://blog.youkuaiyun.com/s_lisheng/article/details/72871218 https://blog.youkuaiyun.com/yockie/article/details/8856190?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-12.vipsorttest&depth_1-utm_source=dis

焦露的博客 6395

【原型模式】原型模式深入分析

原型模式深入分析,浅拷贝,深拷贝

乘风破浪的程序猿 464

深入分析RAG知识库多模态数据预处理

多模态企业数据预处理是构建高质量RAG知识库的关键环节。本文详解了处理流程:1)文档格式识别与路由;2)多模态内容提取(文本、图像、音视频);3)结构解析与语义重建;4)数据清洗与增强;5)智能分块(强调语义完整性);6)元数据注入。推荐使用开源工具如PaddleOCR、Whisper、BLIP-2等,或商业API处理复杂场景,最终生成带丰富元数据的结构化内容,为后续向量化检索奠定基础。

qq_35354529的博客 1379

音频功放电路大全

作为硬件工程师,特别是做纯粹模拟电路、应用于音频功放的工程师,对于A类,B类,AB类,D类,G类,H类,T类功放应该特别熟悉。大多数工程师或许只知道其中的一部分、或者知道大概,为了让更多的工程师掌握更加详尽的音频功放知识,下文对以上说的音频功放做详细的说明。 功放,顾名思义,就是功率放大的缩写。与电压或者电流放大来说,功放要求获得一定的、不失真的功率,一般在大信号状态下工作,因此,功放电路一般包含电压放大或者电流放大电路没有的特殊问题,具体表现在:①输出功率尽可能大;②通常在大信号状态下工作;③非线性失真突

ltqdxl的博客 6595

详解原型模式

原型模式是一种创建型设计模式,其核心思想是通过复制现有的对象来创建新的对象,而不是通过传统的构造函数来创建对象。这种模式允许用户指定创建对象的种类,并通过拷贝这些原型来创建新的对象。 原型模式的主要优点包括: 提高性能:通过复制现有对象,可以避免重复创建对象的开销,特别是在需要频繁创建相似对象的场景中,原型模式能够显著提高性能。 简化对象创建过程:不需要知道具体的类信息,只需复制一个已经存在的实例即可创建新对象,从而简化了对象的创建过程。 原型模式适用于以下场景: 创建成本高或复杂的对象:当对象的创建

如无必要,勿增实体。 1537

在Redroid容器中构建Frida RPC服务:自动化生成淘宝X-Sign签名参数

本文详细介绍了在Redroid容器中构建Frida RPC服务,实现自动化生成淘宝X-Sign等签名参数的完整方案。通过逆向分析定位关键方法,定制Redroid系统使Frida-Server常驻运行,并编写Frida脚本将签名方法暴露为RPC接口,最终封装为可远程调用的微服务,解决了签名生成的可移植性与工程化难题。

ice55的博客 643

设计模式之原型模式

采用 “原型模式” 重构邮件类 Mail,使每次发送新的邮件时,不用new 创建新的Mail 对象,2)复杂的依赖场景, 比如,F 对象的创建依赖 A,A 又依赖 B,B 又依赖 C……不采用设计模式,实现发送广告信,每次发送邮件时,需要new 创建一个新的Mail对象,同的工厂等级结构(具体工厂对应具体产品),而原型模式就不需要这样,原型模式的。产品复制是通过封装在原型类中的克隆方法实现的,无须专门的工厂类来创建产品。1)当创建新的对象实例较为复杂时,使用原型模式可以简化对象的创建过程,通过复制一。

liang8999的博客 1579

三相五柱式消弧线圈自动测控装置设计与实现

本文设计了一种基于STM32的三相五柱式消弧线圈自动测控装置。该装置采用信号注入法检测系统对地电容电流,通过PID自适应算法调节消弧线圈电感值,实现单相接地故障时的快速补偿。硬件系统包含信号采集、注入、控制执行等模块,软件采用Goertzel算法提取特征频率信号,结合增量式PID实现精确控制。实验结果表明,装置电容检测误差小于2%,调谐响应时间小于50ms,满足配电网对消弧线圈自动调谐的技术要求。

AI的内部世界的博客 239

工业相机,大恒,面振相机8脚电源线和I/O触发接口线,颜色和接法说明和触发软件设定

上图: 说明一下,工业相机有TTL逻辑电平触发,也有光耦触发等。 这里一般我们用电路板驱动,就用GPIO触发模式, 这里,准备了两个GPIO触发模式,为LINE2,LINE3都可以选择,然后有一个GPIO_GND 如果,你只有一个触发接口,那么如图,选两个就好了。 实际接法如图。 ...

山云的专栏 1万+

对原型模式的理解

如User的ak字段。

南七行者的博客 741

ardupilot 日志分析《xKF1信息》

ardupilot 日志分析系列将会把ardupilot所有的日志文档进行分析,为我们分析无人机的运行状态,炸鸡原因,传感器状态,电机状态,控制信息,滤波信息做准备。本节主要分析xKF1日志信息,欢迎批评指正。学习好ardupilot必须会分析飞行日志,从飞行日志中我们可以学到很多无人机的知识。无人机是综合知识的体现,涵盖:导航、控制、滤波、算法、协议等各种知识,只有更全面的学习,才能在无人机的道路上越走越远。

陌城烟雨 1225

原型模式介绍

文章目录1、定义与特点定义优点缺点2、结构与实现2.1、模式的结构2.2、模式的实现浅克隆模式深克隆模式3、应用场景参考 1、定义与特点 定义 ​ 原型(Prototype)模式,用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。例如,Windows 操作系统的安装通常较耗时,如果复制就快了很多。在生活中复制的例子非常多,这里不一一列举了。 优点 Java自带的原型模式基于内

FanGer的博客 1798

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

原型模式的优点

测试原型模式的效率 package cn.com.prototype; public class TestPrototypeEfficiency { public static void testNew(int count) { long start = System.currentTimeMillis(); for (int i = 0; i < ...

weixin_44007988的博客 1322

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

上一篇: 工厂方法模式
下一篇: 排序算法的总结
decajes
博客等级 码龄17年 43粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值