JAVA设计模式之原型模式

【Java用法】Java设计模式之(三)原型模式(Prototype Pattern) 一、原型模式简介 1、原型模式简介 原型模式使用原型实例指定创建对象的种类,并且通过拷贝原型对象创建新的对象。 Prototype模式提供了一个通过已存在对象进行新对象创建的接口(clone), clone()实现和具体的语言相关,在C++中通过拷贝构造函数实现。 原型模式实际上就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节。在初始化的信息不发生变化的情况下,克隆是最好的办法,既隐藏了对象创建的细节,又大大提高了性能。因为如果不用clone,每次new都需要执行一次构造函数, 阅读详情

一、原型模式的定义

               原型模式的简单程度仅次于单例模式和迭代器模式。因为简单,所以使用的场景才比较多 :

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

             原型模式的核心是一个 clone 方法,通过该方法来进行对象的拷贝,Java提供了一个Cloneable接口来标示这个对象是可拷贝的,当然有的对象是没有的如果我们想拷贝怎么办呢 ? 我们就只需要重写 clone 方法就可以啦!

二、原型模式的优点

1、性能优良

     原型模式是在内存二进制流的拷贝,要比直接 new 一个对象性能好很多,特别是要在一个循环体内产生大量的对象,原型模式可以更好的体现其优点。

2、逃避构建函数的约束

     它的优点也是缺点,直接在内存中拷贝,构造函数是不会执行的

     优点 : 就是减少了约束

     缺点 : 也是减少了约束

三、原型模式的使用场景

1、资源优化场景

   类初始化需要消化非常多的资源,这个资源包括数据、硬件资源等。

2、性能和安全要求的场景

   通过new产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式。

3、一个对象多个修改者的场景

   一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,可以考虑使用原型模式拷贝多个对象供调用者使用。

四、原型模式的注意事项

1、构造函数不会被执行

2、深拷贝和浅拷贝

    深拷贝 :  对私有的类变量进行独立的拷贝

    浅拷贝 :  clone只是拷贝本对象,其对象内部的数组、引用对象等都不拷贝,还是指向原生对象的内部元素地址,这种拷贝就叫做浅拷贝

3、clone 和 final 两个关键字是有冲突的

 

代码 :

原型类

public class Prototype implements Cloneable {    
    
    public Object clone() throws CloneNotSupportedException {    
        Prototype proto = (Prototype) super.clone();    
        return proto;    
    }    
}   

一个复制的例子

    public class Prototype implements Cloneable, Serializable {    
        
        private static final long serialVersionUID = 1L;    
        private String string;    
        
        private SerializableObject obj;    
        
        /* 浅复制 */    
        public Object clone() throws CloneNotSupportedException {    
            Prototype proto = (Prototype) super.clone();    
            return proto;    
        }    
        
        /* 深复制 */    
        public Object deepClone() throws IOException, ClassNotFoundException {    
        
            /* 写入当前对象的二进制流 */    
            ByteArrayOutputStream bos = new ByteArrayOutputStream();    
            ObjectOutputStream oos = new ObjectOutputStream(bos);    
            oos.writeObject(this);    
        
            /* 读出二进制流产生的新对象 */    
            ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());    
            ObjectInputStream ois = new ObjectInputStream(bis);    
            return ois.readObject();    
        }    
        
        public String getString() {    
            return string;    
        }    
        
        public void setString(String string) {    
            this.string = string;    
        }    
        
        public SerializableObject getObj() {    
            return obj;    
        }    
        
        public void setObj(SerializableObject obj) {    
            this.obj = obj;    
        }    
        
    }    
        
    class SerializableObject implements Serializable {    
        private static final long serialVersionUID = 1L;    
    }    


通过以上的资料大家应该对原型模式有一个新的认识了吧 ! 有误的地方请指出 , 谢谢!

Java设计模式——原型模式 关键代码: 1、实现克隆操作,在 JAVA 实现 Cloneable 接口,重写 clone(),在 .NET 中可以使用 Object 类的 MemberwiseClone() 方法来实现对象的浅拷贝或通过序列化的方式来实现深拷贝。1、配备克隆方法需要对类的功能进行通盘考虑,这对于全新的类不是很难,但对于已有的类不一定很容易,特别当一个类引用不支持串行化的间接对象,或者引用含有循环结构的时候。设计模式,允许一个对象在创建另外一个可定制的对象,无需知道如何创建的细节。5、一个对象多个修改者的场景。 阅读详情

相关推荐

PSIM+PIL+CCS三剑客:手把手教你搞定DSP28335的软硬件联合调试

本文详细介绍了如何利用PSIM、PIL与CCS三款工具,实现DSP28335的软硬件联合调试。通过搭建兼容环境、从PSIM仿真生成PIL代码,再到实战联合调试与问题诊断,手把手指导开发者构建从虚拟模型到实际硬件的完整验证闭环,有效提升电力电子与电机驱动等领域的开发效率与可靠性。

weixin_29183637的博客 185

7-原型模式

1.定义 Specify the kinds of objects to create using a prototypical instance,and create new objects by copying this prototype.(用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。) 2.类图 3.代码 /** * 原型模式通用

世上无难事,只怕有心人 329

BUPT软件安全实验三

可以看出栈溢出对程序运行的安全性有很大的威胁,如果不对栈进行保护,只要系统中存在栈溢出漏洞,即可令攻击者通过非正当方法获取操作权限。(6)解决思考题,即:在不修改StackOverrun程序源代码的情况下,构造shellcode,通过JMP ESP的方式实现通过记事本打开shellcode.txt(可使用CreateProcessA或WinExec等API)。查看缓冲区信息,可以看到dest指向地址0x0012FAF0,其为数组的存放起始位置,也就是shellcode注入的起始位置。

7xun's space 1965

原型模式

定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。我们知道产生一个对象,我们可以通过new关键字,但如果我们是通过对象复制来实现的产生一个对象,那么,这种模式叫做原型模式。 先来看一下原型模式的通用代码。public class PrototypeClass implements Cloneable { //覆写父类的Object方法 @Override

mengxin1995的博客 429

Python进行.tif格式数据波段组合;多波段tif数据波段分离

Python进行.tif格式数据波段组合;多波段tif数据波段分离.tif格式数据波段组合多波段.tif数据波段分离 阔别已久,我又来了;啊啊啊…… 读了研究生,忙到天昏地暗(哈哈哈,这都是借口,主要是花了一定时间适应研究生生活) 这方面的内容我也主要是应用在遥感领域,我们知道在遥感应用中,大多数的图像数据格式为.tif格式的。进行波段组合使用ArcGIS里面的Composite Bands工具是可以实现的,波段分离也可以使用一些工具或巧妙的方法分开。但当你使用Python程序的话,就可以简化这个软件点击和

qq_44353170的博客 1万+

C++ PCL点云处理实战专栏

工业级点云处理技术学习资源,涵盖电力、建筑、隧道等领域的实战案例。内容分为三阶段:代码原理(算法认知)、动态库(项目验证)和完整代码(定制开发)。

weixin_45196569的博客 1117

《设计模式之禅》-原型模式注意事项-构造函数不会执行

一个实现了Cloneable并重写了clone方法的类,通过重写的clone 方式克隆出来的对象是不会执行构造函数的 public class Thing implements Cloneable{ public Thing(){ System.out.println("构造函数被执行了"); } @Override public Thing ...

Minstrel的博客 481

费雪的未来增长评估:预测颠覆性技术的影响

本文旨在提供一个系统性的框架,用于评估和预测颠覆性技术的增长轨迹。我们将重点关注费雪增长模型(Fisher-Pry Model)这一经典技术扩散理论,探讨其在现代技术预测中的应用价值。文章首先介绍费雪增长模型的基本概念,然后深入其数学原理和算法实现。随后展示实际应用案例,讨论工具资源,最后探讨未来发展趋势。每个部分都包含详细的技术实现和理论分析。费雪增长模型(Fisher-Pry Model):一种描述技术替代过程的S型增长模型,用于预测新技术取代旧技术的速率。

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 927

设计模式学习(九)原型模式

文章目录介绍类图说明代码示例应用场景优缺点优点缺点拓展 介绍 原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。 类图说明 原型模式的类图比较简单,其实

he_cha_bu的博客 265

国科大学习资料--人工智能原理与算法-2020年期末考试题解析(学长整理)

国科大学习资料–人工智能原理与算法-2020年期末考试题解析 张文生老师主讲 试卷共有6道题,题目不难,希望大家能取得好的成绩。 3.9 传教士和野人问题。三个传教士和三个野人在河的一岸,有一条能载一个人或者两个人的船。请设法使所有人都渡到河的另一岸,要求在任何地方野人数都不能多于传教士的人数。这个问题在AI领域中很有名,是因为它是第一个从分析的观点探讨问题形式化的论文的主题(Amarel,1968)。 a. 请对该问题进行详细形式化,只描述确保该问题求解所必需的特性。画出完整的状态空间图。 b. 应用合适

无名何许人的博客 4786

5、硬件工程师笔试面试——上拉电阻、下拉电阻(2025版本)

本文系统介绍了上拉电阻和下拉电阻的原理与应用。上拉电阻通过连接电源确保电路高电平状态,常用于数字电路防抖、OC门驱动等场景;下拉电阻连接地线维持低电平,适用于低电平触发电路。文章详细分析了两种电阻的选择方法、功耗与响应速度的平衡策略,以及在高速信号传输中的影响差异。同时对比了二者的优缺点,并提供了模拟电路中的应用实例。最后给出了电阻值计算的工程方法,为硬件工程师的电路设计提供了实用参考。

XU157303764的博客 2868

Java设计模式—原型模式

  (尊重劳动成果,转载请注明出处:https://blog.youkuaiyun.com/qq_25827845/article/details/52422098冷血之心的博客) 目录 个人理解: 定义: 通用类图如下所示: 通用源代码: 优点: 性能优良 逃避构造函数的约束 原型模式的使用场景 ● 资源优化场景 ● 性能和安全要求的场景 ● 一个对象多个修改者的场景 原型模式的...

冷血之心的博客 5254

基于STM32的智能血氧、心率、体温、血压监测系统

摘要:本文设计了一款基于STM32F103C8T6的多功能健康监测系统,可实时检测血氧、心率、体温和血压四项生理参数。系统集成MAX30102、DS18B20等传感器模块,采用OLED显示和蓝牙无线传输技术,实现一键血压测量、阈值报警及手机APP数据管理功能。硬件设计包含传感器采集、电源管理、显示报警等模块;软件采用模块化架构,实现数据采集处理、蓝牙通讯等功能。测试表明系统测量准确可靠,为家庭健康监测提供了便携解决方案。未来可扩展更多监测参数和智能分析功能。

3254968421的博客 766

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

Java设计模式、原型模式

scorpio的博客 494

jre9下载 jdk9

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

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

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

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

空 1115

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

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

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

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

a158s168的博客 456

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

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

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

Z 551

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

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

qq_61875563的博客 881

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

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

渔潭的博客 361

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

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

猎人在吃肉 834

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

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

Fatter$hday的博客 1576

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

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

Elegance never goes out of fashion 9046

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

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

diandingyin9417的博客 105

Java设计模式之原型模式

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

weixin_47301645的博客 1319

Java 设计模式——原型模式

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

代码星辰的博客 1815
上一篇: JAVA设计模式之代理模式
下一篇: JAVA设计模式之命令模式
有志青年L
博客等级 码龄10年 30粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值