java设计模式(原型模式)

【Java用法】Java设计模式之(三)原型模式(Prototype Pattern) 一、原型模式简介 1、原型模式简介 原型模式使用原型实例指定创建对象的种类,并且通过拷贝原型对象创建新的对象。 Prototype模式提供了一个通过已存在对象进行新对象创建的接口(clone), clone()实现和具体的语言相关,在C++中通过拷贝构造函数实现。 原型模式实际上就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节。在初始化的信息不发生变化的情况下,克隆是最好的办法,既隐藏了对象创建的细节,又大大提高了性能。因为如果不用clone,每次new都需要执行一次构造函数, 阅读详情
  创建型模式中还有一种与工厂方法模式完全不同的模式,就是原型模式。 
  原型模式(Prototype Pattern)是创建型模式的一种,其特点在于通过“复制”一个已经存在的实例来返回新的实例,而不是新建实例。被复制的实例就是我们所称的“原型”,这个原型是可定制的。 
  用面向对象的方法来说就是,我们先建立一个原型,然后通过对原型进行复制和修饰的方法,就可以产生一个与原型相似的新对象。即:用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。 
  在java中复制模型对象是通过clone()方法实现的。其实,这个方法可以是任意名字,比如cloneA(),cloneB()等。不过,一般应该使用clone()方法,这样做有两个原因:一是出于习惯,复制对象当然应该是clone();二是,在许多语言中的基础类中,比如做为所有类基础的Object,都定义了clone()方法。因此,实现原型模式的方法一般应该是原型类继承了Cloneable接口,在具体原型类中需要实现clone()方法,完成对象的自我复制。 

  程序代码: 
Java代码   收藏代码
  1. public class Prototype implements Cloneable{  
  2.     
  3.   /** 
  4.   /*浅复制 
  5.   */  
  6.   public Object clone() throws CloneNotSupportedException{  
  7.   
  8.     Prototype prototype = (Prototype)super.clone();  
  9.     return prototype;  
  10.   }  
  11. }  


  调用Prototype模式很简单: 
  Prototype obj = new Prototype(); 
  Prototype obj2 = obj.clone();//复制 

  从以上的使用可以看出,在java中Prototype模式变成clone()方法的使用,此方法执行的是该对象的“浅复制”,而不是“深复制”操作。 
  复制分为两种:浅复制和深复制 
  ●浅复制:将一个对象复制之后,生成一个新的对象,新对象的所有成员变量(基本类型和引用类型)都含有与原来对象相同的值,如果原有对象的成员变量是基本数据类型,就会将这个变量的值复制一份到新对象里面,如果原有对象的成员变量是引用数据类型,那么这个引用指向的对象不会新生成一份,而是,在新对象里面的这个引用与原有对象的引用指向的是同一个对象。 
  ●深复制:将一个对象复制之后,生成一个新的对象,新对象的基本数据变量含有与原有对象相同的值,如果原有对象的成员变量是引用数据类型,在新对象里面,这些引用变量将指向被复制过的新对象,而不再是指向原有的那些被引用的对象,深复制把要复制的对象所引用的对象都复制一遍。
Java设计模式——原型模式 关键代码: 1、实现克隆操作,在 JAVA 实现 Cloneable 接口,重写 clone(),在 .NET 中可以使用 Object 类的 MemberwiseClone() 方法来实现对象的浅拷贝或通过序列化的方式来实现深拷贝。1、配备克隆方法需要对类的功能进行通盘考虑,这对于全新的类不是很难,但对于已有的类不一定很容易,特别当一个类引用不支持串行化的间接对象,或者引用含有循环结构的时候。设计模式,允许一个对象在创建另外一个可定制的对象,无需知道如何创建的细节。5、一个对象多个修改者的场景。 阅读详情

相关推荐

深入浅出SSD:固态存储核心技术、原理与实战(文末赠书)

作为经典畅销书的升级版,本书在第1版的基础上新增了大量新知识(如闪存、UFS、测试、文件系统等),并改写或删减了许多过时或不适用的内容,总修改量超过60%。本书由SSD技术社区SSDFans的核心团队成员联合业界、高校SSD方面的专家共同完成,相对于第1版,内容更全面、更新,也更有深度。本书从产品、技术和应用3个维度展开,全面、详细讲解了SSD的发展历史、产品形态、工作原理、整体架构,以及各个功能模块的原理和使用,从SSD的前端接口协议到FTL算法,再到后端的闪存和纠错,以及测试,本书都有涉及。

阿玥的小博客 3124

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

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

空 1117

第三课 NXP S32K144 MCAL 集成到Vector davinci SIP-第一弹

将NXP S32K144 MCAL 集成到Vector davinci SIP的第三方库,导出ARXMl给Vector davinci SIP使用

candleer的博客 5856

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

Java设计模式、原型模式

scorpio的博客 496

CanOpen PDO映射实战:从原理到配置的完整指南

本文详细解析了CanOpen PDO映射的原理与配置流程,从基础通信机制到实战配置步骤,涵盖禁用PDO、清空映射、逐项映射和使能PDO等关键环节。特别针对西门子G120变频器、台达伺服和倍福CX控制器等不同厂商设备,提供了具体的配置技巧和常见问题排查指南,帮助工程师快速掌握多厂商设备间的PDO通信配置。

weixin_30718391的博客 517

Cadence导入tsmcN65GP PDK的完整流程与常见问题解析

本文详细介绍了Cadence导入tsmcN65GP PDK的完整流程,包括文件解压、目录结构解析、安装脚本运行及Cadence集成配置。重点解析了常见问题如文件路径错误、权限问题和工艺库显示不全的解决方案,并提供了实战技巧与优化建议,帮助用户高效完成PDK安装与配置。

weixin_29215391的博客 546

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

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

a158s168的博客 457

使用 Python 爬取 Wikipedia 数据:抓取百科条目及其内容

维基百科的 API 提供了一些方便的接口,通过这些接口,我们可以轻松获取到维基百科的条目、类别、图片和其他相关信息。维基百科的 API 主要是基于 HTTP 请求的,通过向特定的 URL 发送 GET 请求来获取信息。:获取指定条目的内容。在本博客中,我们介绍了如何使用 Python 爬取维基百科的条目数据。通过使用 Wikipedia API 和网页抓取技术,我们能够高效地获取条目内容,并将其存储和分析。希望本篇教程能帮助你深入理解如何抓取和处理维基百科的数据。

2201_76125261的博客 475

设计模式(Design Pattern) - 创建型模式(Creational Pattern) - 原型模式(Prototype) - Java实现

设计模式(Design Pattern) - 创建型模式(Creational Pattern) - 原型模式(Prototype) 用原型实例指定创建对象的种类,并且通过复制这些原型,创建新的对象。

Z 551

C#每日面试题-属性和字段的区别

在C#面试中,“属性(Property)和字段(Field)的区别”是基础且高频的考点。很多初学者会把两者混为一谈,甚至觉得“属性就是加了get/set的字段”,但这种理解只停留在表面。面试考察的核心,是对“封装思想”的理解,以及两者在语法特性、底层实现、实际应用中的本质差异。今天我们从“基础认知→核心差异→底层原理→实际应用→面试避坑”五个层面,把这个知识点讲透,既保证新手能看懂,又能满足面试的深度要求。

Amon的专栏 779

基于注意力机制的行人重识别(Reld)模型论文解读----Relation-Aware Global Attention for Person Re-identification

任务概述:在多摄像头的复杂场景中,快速定位查找指定目标的所有结果。

qq_52053775的博客 1895

设计模式:原型模式(Prototype Pattern)java版本

摘要 原型模式是一种通过克隆现有对象来创建新实例的设计模式,适用于需要高效生成相似对象的场景。核心思想是利用原型对象的clone()方法快速复制,避免重复初始化开销。文章通过带附件的邮件示例展示了深拷贝实现,并针对在线考试系统的组卷需求,对比了传统方式和原型模式在性能上的差异。典型应用场景包括:对象创建成本高、需要大量相似实例、需保持对象独立性等。实现时需注意区分浅拷贝与深拷贝,可通过序列化或工具类简化深拷贝过程。源码示例见GitHub项目CodeDesignWork。

qq_61875563的博客 882

把 ST03 的历史数据留得更久:ABAP Workload 统计保留期设置、原理与落地避坑指南

SAP ST03性能数据保留期配置指南 ST03/ST03N是SAP系统性能分析的核心工具,但默认数据保留期通常较短(3个月左右),难以满足跨季度对比、年度规划等需求。本文详细解析了ST03数据保留期的配置方法及注意事项: 数据存储机制:性能数据存储在监控库中,通过定期重组作业清理过期数据 配置路径:7.0+系统在"Workload Collector Database→Reorganization→Control"中按Profile分别设置 关键限制:保留期最大值建议不超过99,否则可

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

设计模式之原型模式(Prototype Pattern),java实现

文章目录1、原型模式的定义2、原型模式UML3、 java 中实现克隆4、原型模式的优缺点4.1、优点:4.2、 缺点:5、浅拷贝6、浅克隆与深克隆 的区别7、深度克隆 1、原型模式的定义 原型模式是: 创建型的设计模式 使用原型实例指定待创建对象的类型,并且通过复制这个原型来创建新的对象。 分为 深度克隆 和 浅克隆。 2、原型模式UML 原型模式要求对象实现一个可以“克隆”自身的 接口 ,...

猎人在吃肉 835

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

java设计模式---原型模式(prototype pattern)

java设计模式—原型模式(prototype pattern) 我们在程序开发过程中,都会遇到为一个类创建多个实例的情况,实例的创建开销很大,而且这些实例内部成员往往完全相同或仅有细微的差异,这种情况下如果能通过复制一个已创建的对象实例来重复创建多个相同的对象,这就可以大大减少创建对象的开销,此时就需要使用到原型模式。 1. 定义 原型模式是可以通过一个对象实例确定创建对象的种类,并且通...

渔潭的博客 361

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Java设计模式-创建型设计模式-原型模式

Java设计模式-创建型设计模式-原型模式

Fatter$hday的博客 1576

OV9734 DATASHEET,完整规格书

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

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

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

Elegance never goes out of fashion 9050

JAVA设计模式之 原型模式【Prototype Pattern】

一、概述: 使用原型实例指定创建对象的种类,而且通过拷贝这些原型创建新的对象。简单的说就是对象的拷贝生成新的对象(对象的克隆),原型模式是一种对象创建型模式。 二、使用场景: 创建新的对象能够通过对已有对象进行复制来获得,假设是相似对象,则仅仅需对其成员变量稍作改动。 三、UML结构图: 四、參与者 (1)...

diandingyin9417的博客 105

Java设计模式之原型模式

Java设计模式之原型模式 时间隔了好几天了,今天写一下设计模式中的原型模式,示例代码几天前已经瞧好了,想做一些优化,方便大家对这个模式的理解更加深入一点,另外也需要找更多详细点的资料 一 : 含义 什么是原型模式 ?     使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式是一种对象创建型模式。 二 : 解决的问题          多个相同对象重复创建的较大开

weixin_47301645的博客 1319

JAVA设计模式-原型模式

原型模式是一种创建型模式,用于创建重复的对象,并且保证性能。原型模式创建的对象是由原型对象自身创建的,是原型对象的一个克隆,和原型对象具有相同的结构和相同的值。

胥平勇的博客 452

Java 设计模式——原型模式

本文介绍了原型模式的相关知识。

代码星辰的博客 1815

java设计模式(四)原型模式(Prototype Pattern)

原型模式(Prototype Pattern)的介绍、应用场景、优缺点以及代码实现。

weixin_70044963的博客 478

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

原型模式 原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此...

裕博的博客 420

【设计模式】用Java实现原型模式

原型模式(Prototype Pattern)是一种创建型设计模式,旨在通过复制(克隆)现有对象来创建新对象,而无需通过构造函数来创建。原型模式的核心思想是基于已有对象创建新对象,从而避免了重复构造过程,提高了对象创建的效率。在Java中,对象的复制可以通过实现Cloneable接口和重写clone()方法来实现。Cloneable接口是一个标记接口,用于告诉JVM该类可以被克隆。clone()方法是Object类中的一个方法,用于复制一个对象。

分享Java硬核干货 8507
上一篇: struts1 和struts2 线程安全
下一篇: java动态代理(JDK和cglib)
zljjava
博客等级 码龄15年 155粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值