我们手头上已经得到一个Product实例了,现在我们由于业务的要求,需要再获取若干个完全一样或相近的Product,好完成其他的工作。这个 时候我们要做的工作就是复制一个。按照以往的做法,我们是每要求复制出一个的时候,我们会先new出一个对象,然后逐个属性地先从样板Product中 get出来再set到新对象中去。
java 代码
- public class ClassSample {
-
- private String attrA = null;
-
- private String attrB = null;
-
- ......
-
-
- }
java 代码
- // cs1为得到的样本
- ClassSample cs2 = new ClassSample();
- cs2.setAttrA( cs1.getAttrA() );
- cs2.setAttrB( cs1.getAttrB() );
- ......
程序员总是为如何能够更懒惰而勤奋地努力着。这样的劳模可不是好的程序员该做的事,这种烦琐而重复性高的复制能不能只写一遍呢?答案是“可以”,而且很简单。我们只需要在原型对象中增加一个clone()函数即可,由类本身来帮我们完成这个复制工作。
java 代码
- public class ClassSample {
- private String attrA = null;
-
- private String attrB = null;
- ......
-
-
-
-
- public ClassSample clone() {
- ClassSample cs = new ClassSample();
- cs.setAttrA(this.attrA);
- cs.setAttrB(this.attrB);
- return cs;
- }
- }
这样,复制创建对象就简单了很多了。
java 代码
- ClassSample cs2 = cs1.clone();
本来故事到这里便结束了。可是由于Java为我们做了更多,让我们更方便地使用Prototype模式,为了让懒惰进行到底,也同时体谅一下 Java的良苦用心,有义务要在这里说说Java为我们做的Prototype模式的简化。大家都知道在Java中所有的类都是 java.lang.Object的子类,而且在Object中已经定义了clone()方法。通过使用这个clone()方法我们就可以简单方便地进行 复制创建了。
可是这个clone()方法可不能随便使用,冒失失地调用surper.clone()是会抛出CloneNotSupportedException异常的。我们还需要实现Cloneable接口才行。
java 代码
- public class ClassSample implements Cloneable {
- private String attrA = null;
-
- private String attrB = null;
- ......
-
-
-
-
- public ClassSample clone() throws CloneNotSupportedException {
- ClassSample cs = (ClassSample) super.clone();
- return cs;
- }
- }
简单的一句super.clone()就可以完成我们的各种setter,getter操作。确实很方便。
我们在进行clone的时候仍然使用下面的句子就可以进行对象复制创建了。
java 代码
ClassSample cs2 = cs1.clone();
同时要考虑到深拷贝与浅拷贝的问题。
分享到:
相关推荐
ava常用设计模式-原型模式 原型模式(Prototype Pattern)是一种创建型设计模式,允许通过复制现有对象来创建新对象,而不是通过实例化类来创建新对象。在需要创建大量相似对象时非常有用,它可以避免重复创建对象...
**原型模式(Prototype Pattern)**是一种基于克隆的创建型设计模式,它的主要目的是为了提高创建新对象的效率,特别是当创建新对象的过程复杂或者资源消耗较大时。在原型模式中,一个已经创建的对象(称为原型)被...
原型模式(Prototype Pattern)是一种创建型设计模式,它允许我们通过复制现有的对象来创建新对象,而无需知道具体创建过程的细节。这种模式在处理对象的创建时,特别是在需要大量相似对象时,能够提高效率,避免了...
原型模式(Prototype Pattern)是其中一种行为设计模式,它允许我们通过复制现有对象来创建新对象,而不是通过传统方式实例化新对象。这一模式尤其适用于创建复杂或昂贵的对象,因为它提供了对象克隆的能力,从而...
原型模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在原型模式中,一个对象可以被克隆以创建新对象,而无需知道具体的创建细节。这种模式在需要重复创建相似对象时非常有用,避免了每次创建新对象时都...
原型模式(Prototype Pattern)是软件设计模式中的一种创建型模式,它提供了一种复制已有对象而不必知道其具体类别的方法。在C++中,原型模式常常利用拷贝构造函数或赋值运算符来实现对象的克隆。这种模式在需要频繁...
在面向对象编程中,当我们需要频繁地创建具有相同或相似属性的对象时,原型模式可以极大地提高效率。 ### 模式原理 在原型模式中,一个类定义了创建新对象的接口,而其实现由它的子类完成。这个接口通常只有一个...
原型模式(Prototype Pattern)是一种创建型设计模式,允许通过复制现有对象来创建新对象,而不是通过类构造器。这种模式常用于需要频繁创建相似对象的场景,能够提高性能并减少内存使用。 原型模式的组成 原型接口...
即原型模式,提供一个已经存在的对象进行新对象创建的接口,一般情况下都是使用Clone接口。 此模式非常简单,简单的说就是复制多个当前对象供使用。Prototype模式允许一个对象再创建另外一个可定制的对象,根本...
在软件设计领域,原型模式(Prototype Pattern)是一种创建型设计模式,它允许我们通过复制现有的对象来创建新对象,而不是通过传统的构造函数方式。原型模式主要用于简化实例化过程,特别是当对象的创建成本较高...
`cngi_prototype`库很可能包含了一系列与原型模式相关的函数和类,为开发者提供了便捷的接口,用于实现原型对象的创建和复制。这使得开发者能够在项目中轻松集成这一模式,提高代码复用性和灵活性。 在后端开发中,...
iOS中的原型模式(Prototype)是一种设计模式,它允许我们通过复制已有对象来创建新的对象,而无需知道具体的创建过程。这种模式在某些情况下能够提高代码的可复用性和效率,特别是当创建新对象的步骤复杂时。 原型...
pyclesperanto_prototype遵循了原型模式的设计理念,这允许开发者快速地创建和测试新的图像处理算法。原型模式允许通过复制现有对象来创建新对象,简化了创建过程,尤其适合于复杂算法的迭代开发。 2. **开发语言*...
标题中的"Value Callic Prototype Change"指的是在JavaScript编程中,关于对象原型(prototype)和值类型函数(value function)的变化情况。在JavaScript中,对象可以通过原型链共享属性和方法,而值类型(如Number...
**原型模式(Prototype Pattern)详解** 在软件设计中,原型模式是一种创建型设计模式,它提供了一种通过复制已有对象来创建新对象的方式,避免了重复的构造过程,提高了代码的效率和可维护性。原型模式的核心思想...
本篇文章将深入探讨“原型模式(Prototype)”这一经典的设计模式,它是面向对象设计的一个重要概念,尤其在C++编程中有着广泛的应用。 原型模式是一种创建型设计模式,它的核心思想是通过复制已有对象来创建新对象,...
在iOS开发中,我们可以通过实现NSCopying协议来利用原型模式。 首先,要使用原型设计模式,我们需要定义一个原型类,这个类通常包含一个拷贝自身的方法,比如`copyWithZone:`。这个方法会创建一个与当前对象相同的...
**原型模式(Prototype Pattern)**是一种创建型设计模式,它提供了一种通过复制已有对象来创建新对象的方式,而不是通过构造函数。在某些情况下,当创建新对象的成本非常高时(例如,对象需要大量的初始化操作或者从...
在本课程中,我们将深入探讨C#编程中的一个重要设计模式——Prototype原型模式,它是创建型设计模式的一种。原型模式主要用于简化实例化过程,通过复制已有对象来创建新对象,而不是直接通过构造函数来创建。这一...
**原型模式(Prototype)** 原型模式是一种创建型设计模式,它提供了一种通过复制已有对象来创建新对象的方式,而不是通过传统的构造函数。这种模式在系统中需要创建大量相似对象时特别有用,可以提高效率并减少内存...