下面来说说Prototype模式。首先还是照旧先来看看牛人想出Prototype模式的意图。
用原型实例制定创建对象的种类,并且通过拷贝这些原型创建新的对象。(G4)
场景
我们手头上已经得到一个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();
(完)
分享到:
相关推荐
Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。...
本文将详细探讨"原型设计模式"(Prototype Design Pattern)及其在iOS中的应用。 原型设计模式是一种创建型设计模式,它通过复制已有对象来创建新对象,而不是通过构造函数或者工厂方法。这种模式主要用于减少创建...
ava常用设计模式-原型模式 原型模式(Prototype Pattern)是一种创建型设计模式,允许通过复制现有对象来创建新对象,而不是通过实例化类来创建新对象。在需要创建大量相似对象时非常有用,它可以避免重复创建对象...
原型模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在原型模式中,一个对象可以被克隆以创建新对象,而无需知道具体的创建细节。这种模式在需要重复创建相似对象时非常有用,避免了每次创建新对象时都...
**原型设计模式(Prototype Pattern)**是一种创建型设计模式,它允许我们通过复制现有的对象来创建新对象,而不是通过构造函数来实例化新对象。在面向对象编程中,当我们需要频繁地创建具有相同或相似属性的对象时,...
**原型模式(Prototype Pattern)**是一种基于克隆的创建型设计模式,它的主要目的是为了提高创建新对象的效率,特别是当创建新对象的过程复杂或者资源消耗较大时。在原型模式中,一个已经创建的对象(称为原型)被...
原型模式(Prototype Pattern)是一种创建型设计模式,它允许我们通过复制现有的对象来创建新对象,而无需知道具体创建过程的细节。这种模式在处理对象的创建时,特别是在需要大量相似对象时,能够提高效率,避免了...
在本课程中,我们将深入探讨C#编程中的一个重要设计模式——Prototype原型模式,它是创建型设计模式的一种。原型模式主要用于简化实例化过程,通过复制已有对象来创建新对象,而不是直接通过构造函数来创建。这一...
在软件设计领域,原型模式(Prototype Pattern)是一种创建型设计模式,它允许我们通过复制现有的对象来创建新对象,而不是通过传统的构造函数方式。原型模式主要用于简化实例化过程,特别是当对象的创建成本较高...
`cngi_prototype`库很可能包含了一系列与原型模式相关的函数和类,为开发者提供了便捷的接口,用于实现原型对象的创建和复制。这使得开发者能够在项目中轻松集成这一模式,提高代码复用性和灵活性。 在后端开发中,...
原型模式(Prototype Pattern)是软件设计模式中的一种创建型模式,它提供了一种复制已有对象而不必知道其具体类别的方法。在C++中,原型模式常常利用拷贝构造函数或赋值运算符来实现对象的克隆。这种模式在需要频繁...
pyclesperanto_prototype遵循了原型模式的设计理念,这允许开发者快速地创建和测试新的图像处理算法。原型模式允许通过复制现有对象来创建新对象,简化了创建过程,尤其适合于复杂算法的迭代开发。 2. **开发语言*...
原型模式(Prototype Pattern)是其中一种行为设计模式,它允许我们通过复制现有对象来创建新对象,而不是通过传统方式实例化新对象。这一模式尤其适用于创建复杂或昂贵的对象,因为它提供了对象克隆的能力,从而...
**原型模式(Prototype Pattern)详解** 在软件设计中,原型模式是一种创建型设计模式,它提供了一种通过复制已有对象来创建新对象的方式,避免了重复的构造过程,提高了代码的效率和可维护性。原型模式的核心思想...
iOS中的原型模式(Prototype)是一种设计模式,它允许我们通过复制已有对象来创建新的对象,而无需知道具体的创建过程。这种模式在某些情况下能够提高代码的可复用性和效率,特别是当创建新对象的步骤复杂时。 原型...
而"value-callic-prototype-change.js"则可能直接涉及到值类型函数原型变化的测试代码,它会创建各种场景来触发内联缓存的行为,然后检查结果是否符合预期。 总的来说,这个测试和相关文件关注的是JavaScript引擎的...
**原型模式(Prototype Pattern)**是一种创建型设计模式,它提供了一种通过复制已有对象来创建新对象的方式,而不是通过构造函数。在某些情况下,当创建新对象的成本非常高时(例如,对象需要大量的初始化操作或者从...
原型模式(Prototype Pattern)是一种创建型设计模式,允许通过复制现有对象来创建新对象,而不是通过类构造器。这种模式常用于需要频繁创建相似对象的场景,能够提高性能并减少内存使用。 原型模式的组成 原型接口...
"原型"(Prototype)设计模式是其中的一种,它的主要目标是通过复制现有的对象来创建新的对象,而不是通过构造函数来创建新实例。这种方法尤其适用于当创建新对象的过程复杂或者昂贵时,例如,当对象需要大量初始化...
(100%) 设计模式面面观(5):抽象工厂模式(AbstractFactory)-创建型模式 (100%) 设计模式面面观(6):生成器模式(Builder)-创建型模式 (100%) 设计模式面面观(7):原型模式(Prototype)-...