首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

java设计模式(4)-原型设计模式

这篇推文学习创建型模式最后一种-原型模式,该模式的思想是将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象,以便使用 首先需要了解对象深、浅复制的概念: 浅拷贝:将一个对象复制后,基本数据类型的变量都会重新创建...Animal:具体原型类。实现克隆的具体操作。 Manager(这边用测试类代替):管理者类。让一个原型克隆自身,从而获得一个新的对象。...所有的Java类都继承至Object,而Object类提供了一个clone()方法,该方法可以将一个java对象复制一份,因此在java中可以直接使用clone()方法来复制一个对象。...异常 Java中任何实现了Cloneable接口的类都可以通过调用clone()方法来复制一份自身然后传给调用者。...原型模式提供了简化的创建结构。 缺点 在实现深克隆的时候可能需要比较复杂的代码。

45550

Java设计模式|原型模式

原型模式 原型模式属于对象的创建模式,通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象,这就是原型模式的用意。...原型模式涉及到三个角色: 1、客户角色 客户类提出创建对象的请求 2、抽象原型角色 这是一个抽象角色,通常由一个接口或者抽象类实现,此角色给出所有具体原型类所需的接口 3、具体原型角色 被复制的角色,此角色需要实现抽象的原型角色所要求的接口...不过原型模式单独用得不多,一般是和其他设计模式一起使用。...原型模式在Java中的应用及解读 既然原型模式的关注点是在于通过克隆自身来获取一个和自身一样的对象,那其实只要是实现了Cloneable接口的类都可以算是原型模式的应用,比如ArrayList吧: public...class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, java.io.Serializable

32630
您找到你想要的搜索结果了吗?
是的
没有找到

Java设计模式--原型模式

先上定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。...Prototype原型模式是一种创建型设计模式,Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建...再来一个例子,在java世界中创建一个对象通常用new关键字就可以搞定。比如一个教师,它的属性有名字、地址、身高、课程。...我可受不了,这个时候,主人公原型模式就出来了。 而在java中cloneable很容易实现。我们让Teacher类实现Cloneable接口即可。...那好,当存在集合对象的类进行原型克隆的时候会发生什么现象?

52520

图图谈设计模式_原型设计模式_java

时间过的真快,今天将是创建型结构中的最后一个设计模式了---原型设计模式。...官方概述: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 小编简单的说就是我们就是把对象复制一份不去new啦。 那为什么呢,原因很简单,效率高。...最近做项目就用到该模式,实体A关联实体B,B关联实体C。而通过实现序列化和反序列化的深度复制,只需复制A,那么关联的对象都可以同时复制成功,前提是实现Serializable接口,一种jdk规范。...package org.huey.partten.prototype; import java.util.Date; /** * 浅复制 * @author huey * */ public class...创建型一个5种设计模式,下次将分享结构型的了哦。如果你没看过,往前面自己找一下吧,看准图图,看准huey。 下次见哦!

41411

Java设计模式之原型模式

原型模式(Prototype Pattern)是一种创建型设计模式,它允许对象在创建时通过复制一个现有对象的实例来进行。...原型模式通常涉及一个抽象的原型类,该类声明了一个克隆方法,具体的子类实现该方法以创建新对象。在Java开发中,原型模式的实现通常涉及使用Cloneable接口和clone方法。...原型模式示例下面通过一个示例来说明原型模式在Java中的实现。假设我们有一个图形对象的类层次结构,其中包括圆形(Circle)和矩形(Rectangle)两个具体类。...我们希望通过原型模式来创建这些图形对象的副本。1....ShapePrototypeManager类充当了原型对象的管理器,通过一个静态的shapeMap来存储已经创建的原型对象,并通过getShape方法来获取指定原型对象的克隆。

21510

Java设计模式(五)----原型模式

原型模式(Prototype) 一、概述 二、结构 三、浅度克隆和深度克隆  浅度克隆  深度克隆 一、概述  定义:原型模式属于对象的创建模式。...通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。简言之:就是复制粘贴。这就是选型模式的用意。...二、结构 原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Prototype类需要具备以下两个条件: 1、实现Cloneable接口。...在java语言有一个Cloneable接口,它的作用只有一个,就是在运行时通知虚拟机可以安全地在实现了此接口的类上使用clone方法。...在java虚拟机中,只有实现了这个接口的类才可以被拷贝,否则在运行时会抛出 CloneNotSupportedException异常。 2、重写Object类中的clone方法。

52390

Java 设计模式(八)《原型模式》

原型模式 原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。...- 可复用的面向对象软件元素) 的书,该书首次提到了软件开发中设计模式的概念。...他们所提出的设计模式主要是基于以下的面向对象设计原则。 对接口编程而不是对实现编程。 优先使用对象组合而不是继承。...在实际项目中,原型模式很少单独出现,一般是和工厂方法模式一起出现,通过 clone 的方法创建一个对象,然后由工厂方法提供给调用者。 原型模式已经与 Java 融为浑然一体,大家可以随手拿来使用。...---- 应用实例 java.lang.Object#clone()

30410

Java设计模式(4)原型模式

前言 在软件开发的世界里,设计模式如同一本精妙的编码诗集,已经成为一种标准的编程实践。在Java编程中,设计模式很重要。...本人将制作一个关于Java设计模式的系列文章,总共23种设计模式将以一篇一篇文章讲解,代码笔记已开源:Gitee点击跳转。在上一篇《Java设计模式(3)建造者模式》文章中,我们介绍了建造者模式。...本文是这个系列的第四篇章,我们将讲解一下原型模式的实现方式、应用场景以及它的用途。 原型模式 原型模式是一种创建型设计模式,其主要目的是通过复制现有对象来创建新对象,而不是通过实例化类来创建。...System.out.println(concretePrototype); Prototype clone = concretePrototype.clone(); System.out.println(clone); 输出 结尾 Java...中的Object类实现了Cloneable接口,这就意味着Java中的任何对象都可以实现原型模式。

5410

Java设计模式之原型模式

优点是比较好理解,简单易操作; 在创建新的对象时,总是需要重新获取原始对象的属性,如果创建的对象比较复杂时,效率较低; 总是需要重新初始化对象,而不是动态地获得对象运行时的状态,不够灵活; 改进的思路分析:Java...中Object类是所有类的根类,Object类提供了一个clone( )方法,该方法可以将一个Java对象复制一份,但是需要实现clone的Java类必须要实现一个接口Cloneable,该接口表示该类能够复制且具有复制的能力...(原型模式)。...原型模式 原型模式是指:用原型实例指定创建对象的种类,并且通过拷贝这些原型,创建新的对象。 原型模式是一种创建型设计模式,允许一个对象再创建另一个可定制的对象,无需知道如何创建的细节。...工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建,即“对象.clone( )”。

18720

Java描述设计模式(05):原型模式

一、原型模式简介 1、基础概念 原型模式属于对象的创建模式。通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。...2)、抽象原型(Prototype)角色:这是一个抽象角色,通常由一个Java接口或Java抽象类实现。此角色给出所有的具体原型类所需的接口。...3)、具体原型(Concrete Prototype)角色:被复制的对象。此角色需要实现抽象的原型角色所要求的接口。...在Java语言里深度克隆一个对象,常常可以先使对象实现Serializable接口,然后把对象(实际上只是对象的拷贝)写到一个流里(序列化),再从流里读回来(反序列化),便可以重建对象。...原型模式可以在运行期间,由客户来注册符合原型接口的实现类型,也可以动态地改变具体的实现类型,看起来接口没有任何变化,但其实运行的已经是另外一个类实例了。因为克隆一个原型就类似于实例化一个类。

38310

Java设计模式(五)Prototype原型模式

一、场景描述 创建型模式中,从工厂方法模式,抽象工厂模式,到建造者模式,再到原型模式,我的理解是,创建对象的方式逐步从编码实现转向内存对象处理。...原型模式下,基于原型类对象,克隆创建新对象,因此为原型类对象赋予的属性值在新对象中可直接使用,免去了重复赋值; 例如仪器数据采集器的共同初始化工作可在原型类对象中完成,随后将其克隆出PDF文件数据采集器对象和...二、示例代码 原型类: package lims.designpatterndemo.prototypedemo; import java.io.ByteArrayInputStream; import...java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import...java.io.ObjectOutputStream; import java.io.Serializable; public class EquipmentDataCapture implements

53770

Java设计模式学习记录-原型模式

2、Java中的Object的clone()方法 因为在Java中所有的Java类都继承自java.lang.Object。...而Object的类中提供一个默认的clone()方法,可以将一个Java对象复制一份。因此在Java中可以直接使用Object提供的clone()方法来实现对象的复制,这样实现原型模式就比较简单了。...需要注意的是,能够调用clone()实现拷贝的Java类,必须实现一个标识接口Cloneable,表示这个Java类支持被复制,为什么说是标识接口呢,因为这个接口里面没有定义任何方法,只是用了标识可以执行某些操作...在上面介绍的实现复制的第二种方法里面的java.lang.Object类就是担当的这个角色。...在实际项目中使用这种方式的还是比较少的。一般内部的数组和引用对象才不复制,其他的原始类型int、long、double等类型是会被复制的。

31050

图解Java设计模式之原型模式

图解Java设计模式之原型模式 克隆羊的问题 原型模式 - 基本介绍 原型模式在Spring框架中源码分析 浅拷贝的介绍 深拷贝基本介绍 克隆羊的问题 现在有一只羊tom,姓名为 : tom,年龄为 :...3)总是需要重新初始化对象,而不是动态地获得对象运行时的状态,不够灵活 思路 : Java中Object类是所有类的根类,Object类提供了一个clone()方法,该方法可以将一个Java对象复制一份...,但是需要实现clone的Java类必须要实现一个接口Cloneable,该接口表示该类能够复制且具有复制的能力 =》原型模式 原型模式 - 基本介绍 1)原型模式(Prototype模式)是指 :用原型实例指定创建对象的种类...,并且通过拷贝这些原型,创建新的对象 2)原型模式是一种创建型设计模式,运行一个对象再创建另外一个可定制的对象,无需知道如何创建的细节 3)工作原理是 :通过将一个原型对象传给那个要发动创建的对象,...; import java.io.ByteArrayOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream

43320

Java设计模式之(四)——原型模式

Prototype Design Pattern:用原型实例指定创建对象的种类, 并且通过拷贝这些原型创建新的对象。...Java 中 Object 类是所有类的根类,Object 类提供了一个 clone()方法,该方法可以将一个 Java 对象复制一份,但是在调用 clone方法的Java类必须要实现一个接口Cloneable...* See {@link java.lang.Object#clone()} for details on overriding this * method....* * @author unascribed * @see java.lang.CloneNotSupportedException * @see java.lang.Object...4、原型模式使用场景 ①、在需要一个类的大量对象的时候,使用原型模式是最佳选择,因为原型模式是在内存中对这个对象进行拷贝,要比直接new这个对象性能要好很多,在这种情况下,需要的对象越多,原型模式体现出的优点越明显

25720

Java设计模式学习笔记—原型模式

前言 目前设计模式学习主要基于菜鸟教程的设计模式,后期不排除会追加从其他地方学来内容。 文章最后“Java设计模式笔记示例代码整合”为本系列代码整合,所有代码均为个人手打并运行测试,不定期更新。...原型模式 原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。...风语:或许接触拷贝的相关内容比较少,目前理解是可以用来通过拷贝创建多个重复对象的设计模式,总感觉有点晕乎乎的,暂且先记下来,一点点消化。...原型模式同样用于隔离类对象的使用者和具体类型(易变类)之间的耦合关系,它同样要求这些"易变类"拥有稳定的接口。 应用实例 细胞分裂。 JAVA 中的 Object clone() 方法。...在实际项目中,原型模式很少单独出现,一般是和工厂方法模式一起出现,通过 clone 的方法创建一个对象,然后由工厂方法提供给调用者。原型模式已经与 Java 融为浑然一体,大家可以随手拿来使用。

35520

Java 设计模式系列(6) —— 原型模式

原型模式 原型模式的定义: 用原型实例创建对象的种类,并且通过复制这些原型创建新的对象 原型模式涉及的三个角色: Client 角色 (客户角色): 该角色提出创建对象的请求 Prototype 角色...(抽象原型角色):该角色用于给出具体原型所需的接口,常由接口或抽象类担任 Concrete Protype 角色 (具体角色): 该角色是被复制的对象必须实现抽象原型的接口 浅拷贝与深拷贝 当拷贝对象时...原型模式的简单示例 ?...原型模式的优点及使用场景 优点: 性能优良:原型模式是直接在内存二进制流中进行复制的,要比直接 new 一个对象的性能要高,特别是在循环体内产生大量对象时。...原型模式可以更好的提现其优点 逃避构造函数的约束, 原型模式的使用场景: 资源优化场景: 类初始化需要消耗很多资源,这个资源包括数据和硬件资源等 性能和安全要求场景: 通过 new 产生一个新的对象需要非常繁琐的数据准备或访问权限

26120

重学 Java 设计模式:实战原型模式

Java多数类中提供的API方法;Object clone()。 细胞的有丝分裂。 类似以上的场景并不少,但如果让你去思考平时的代码开发中,有用到这样的设计模式吗?...六、原型模式重构代码 接下来使用原型模式来进行代码优化,也算是一次很小的重构。...原型模式,乱序题目比对结果 七、总结 以上的实际场景模拟了原型模式在开发中重构的作用,但是原型模式的使用频率确实不是很高。如果有一些特殊场景需要使用到,也可以按照此设计模式进行优化。...另外原型设计模式的优点包括;便于通过克隆方式创建复杂对象、也可以避免重复做初始化操作、不需要与类中所属的其他类耦合等。...终究设计模式是一整套的思想,在不同的场景合理的运用可以提升整体的架构的质量。永远不要想着去硬凑设计模式,否则将会引起过渡设计,以及在承接业务反复变化的需求时造成浪费的开发和维护成本。

36110

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

原型模式的定义 原型(Prototype)模式的定义如下:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。...原型模式的优缺点 原型模式的优点 Java 自带的原型模式基于内存二进制流的复制,在性能上比直接 new 一个对象更加优良。...原型模式的结构 原型模式包含以下主要角色。 抽象原型类:规定了具体原型对象必须实现的接口。 具体原型类:实现抽象原型类的 clone() 方法,它是可被复制的对象。...访问类:使用具体原型类中的 clone() 方法来复制新的对象。 原型模式的实现 原型模式的克隆分为浅克隆和深克隆。...Java 中的 Object 类提供了浅克隆的 clone() 方法,具体原型类只要实现 Cloneable 接口就可实现对象的浅克隆,这里的 Cloneable 接口就是抽象原型类。

29730

重学 Java 设计模式:实战原型模式

重学 Java 设计模式:实战原型模式===================今天我们将重点探讨一种强大而灵活的设计模式——原型模式。...这时候,原型模式就能派上用场了。让我们一起深入了解原型模式并学习如何在 Java 中应用它吧!什么是原型模式?...原型模式是一种创建型设计模式,它允许我们通过克隆(复制)现有对象来创建新对象,而无需依赖传统的实例化方式。这种方式使得我们可以在运行时动态地创建对象,而无需关心具体对象的类型。...示例代码让我们来看一下如何在 Java 中使用原型模式来解决这个问题。...总结--原型模式是一种非常有用的设计模式,特别适用于需要创建大量相似对象的场景。它通过克隆现有对象来创建新对象,避免了重复的实例化过程,提高了性能并降低了系统的复杂性。

15320
领券