`
lintomny
  • 浏览: 225703 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Prototype - 原型创建模式

阅读更多

下面来说说Prototype模式。首先还是照旧先来看看牛人想出Prototype模式的意图。

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

场景

我们手头上已经得到一个Product实例了,现在我们由于业务的要求,需要再获取若干个完全一样或相近的Product,好完成其他的工作。这个时候我们要做的工作就是复制一个。按照以往的做法,我们是每要求复制出一个的时候,我们会先new出一个对象,然后逐个属性地先从样板Product中get出来再set到新对象中去。

java 代码
 
  1. public class ClassSample {   
  2.   
  3.   private String attrA = null;   
  4.   
  5.   private String attrB = null;   
  6.   
  7.   ......   
  8.   
  9.   // setter and getter   
  10. }  
java 代码
 
  1. // cs1为得到的样本
  2. ClassSample cs2 = new ClassSample();   
  3. cs2.setAttrA( cs1.getAttrA() );   
  4. cs2.setAttrB( cs1.getAttrB() );   
  5. ......  

 程序员总是为如何能够更懒惰而勤奋地努力着。这样的劳模可不是好的程序员该做的事,这种烦琐而重复性高的复制能不能只写一遍呢?答案是“可以”,而且很简单。我们只需要在原型对象中增加一个clone()函数即可,由类本身来帮我们完成这个复制工作。

java 代码
 
  1. public class ClassSample {  
  2.   private String attrA = null;  
  3.   
  4.   private String attrB = null;  
  5.   ......  
  6.   
  7.   // settter and getter  
  8.   
  9.   // clone  
  10.   public ClassSample clone() {  
  11.     ClassSample cs = new ClassSample();  
  12.     cs.setAttrA(this.attrA);  
  13.     cs.setAttrB(this.attrB);  
  14.     return cs;  
  15.   }  
  16. }  

 这样,复制创建对象就简单了很多了。

java 代码
  1. ClassSample cs2 = cs1.clone();  

 本来故事到这里便结束了。可是由于Java为我们做了更多,让我们更方便地使用Prototype模式,为了让懒惰进行到底,也同时体谅一下Java的良苦用心,有义务要在这里说说Java为我们做的Prototype模式的简化。大家都知道在Java中所有的类都是java.lang.Object的子类,而且在Object中已经定义了clone()方法。通过使用这个clone()方法我们就可以简单方便地进行复制创建了。

可是这个clone()方法可不能随便使用,冒失失地调用surper.clone()是会抛出CloneNotSupportedException异常的。我们还需要实现Cloneable接口才行。

java 代码
 
  1. public class ClassSample implements Cloneable {    
  2.   private String attrA = null;    
  3.     
  4.   private String attrB = null;    
  5.   ......    
  6.     
  7.   // settter and getter    
  8.     
  9.   // clone    
  10.   public ClassSample clone() throws CloneNotSupportedException {    
  11.     ClassSample cs = (ClassSample) super.clone();  
  12.     return cs;    
  13.   }    
  14. }  

简单的一句super.clone()就可以完成我们的各种setter,getter操作。确实很方便。 

我们在进行clone的时候仍然使用下面的句子就可以进行对象复制创建了。

java 代码
  1. ClassSample cs2 = cs1.clone();  

 (完)

分享到:
评论
5 楼 jialno 2007-06-04  
如果,可以举个简单的运用例子就,更好了
4 楼 抛出异常的爱 2007-05-23  
不想下流在运用对象时对对象进行操作

当一个传值引用来用时。。。。


不过楼主发入门版 的好一点。。。
因为楼主想要讨论的东西
明显没有什么意义。
3 楼 aone 2007-05-23  
javastudy 写道
复制多个对象啊

我的意思是什么情况下才用的着需要复制多个同样的对象出来??
2 楼 liuganquan 2007-05-22  
没完没完,只说了浅clone ,还有深clone
现在不谈模式了,用到啥子就是啥子
1 楼 aone 2007-05-11  
什么情况下才用的着这种模式呢...

相关推荐

    设计模式 创建型模式 Prototype模式(原型)

    Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。...

    iOS设计模式-原型设计模式

    本文将详细探讨"原型设计模式"(Prototype Design Pattern)及其在iOS中的应用。 原型设计模式是一种创建型设计模式,它通过复制已有对象来创建新对象,而不是通过构造函数或者工厂方法。这种模式主要用于减少创建...

    ava常用设计模式-原型模式

    ava常用设计模式-原型模式 原型模式(Prototype Pattern)是一种创建型设计模式,允许通过复制现有对象来创建新对象,而不是通过实例化类来创建新对象。在需要创建大量相似对象时非常有用,它可以避免重复创建对象...

    设计模式专题之(五)原型模式---设计模式原型模式示例代码(python--c++)

    原型模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在原型模式中,一个对象可以被克隆以创建新对象,而无需知道具体的创建细节。这种模式在需要重复创建相似对象时非常有用,避免了每次创建新对象时都...

    原型设计模式prototype

    **原型设计模式(Prototype Pattern)**是一种创建型设计模式,它允许我们通过复制现有的对象来创建新对象,而不是通过构造函数来实例化新对象。在面向对象编程中,当我们需要频繁地创建具有相同或相似属性的对象时,...

    Prototype Pattern原型模式

    **原型模式(Prototype Pattern)**是一种基于克隆的创建型设计模式,它的主要目的是为了提高创建新对象的效率,特别是当创建新对象的过程复杂或者资源消耗较大时。在原型模式中,一个已经创建的对象(称为原型)被...

    01-02-02-原型模式详解1

    原型模式(Prototype Pattern)是一种创建型设计模式,它允许我们通过复制现有的对象来创建新对象,而无需知道具体创建过程的细节。这种模式在处理对象的创建时,特别是在需要大量相似对象时,能够提高效率,避免了...

    C#视频-面向对象设计模式纵横谈(6):Prototype 原型模式(创建型模式)

    在本课程中,我们将深入探讨C#编程中的一个重要设计模式——Prototype原型模式,它是创建型设计模式的一种。原型模式主要用于简化实例化过程,通过复制已有对象来创建新对象,而不是直接通过构造函数来创建。这一...

    prototype-demo.zip

    在软件设计领域,原型模式(Prototype Pattern)是一种创建型设计模式,它允许我们通过复制现有的对象来创建新对象,而不是通过传统的构造函数方式。原型模式主要用于简化实例化过程,特别是当对象的创建成本较高...

    Python库 | cngi_prototype-0.0.18.tar.gz

    `cngi_prototype`库很可能包含了一系列与原型模式相关的函数和类,为开发者提供了便捷的接口,用于实现原型对象的创建和复制。这使得开发者能够在项目中轻松集成这一模式,提高代码复用性和灵活性。 在后端开发中,...

    C++设计模式-原型模式

    原型模式(Prototype Pattern)是软件设计模式中的一种创建型模式,它提供了一种复制已有对象而不必知道其具体类别的方法。在C++中,原型模式常常利用拷贝构造函数或赋值运算符来实现对象的克隆。这种模式在需要频繁...

    Python库 | pyclesperanto_prototype-0.4.1.tar.gz

    pyclesperanto_prototype遵循了原型模式的设计理念,这允许开发者快速地创建和测试新的图像处理算法。原型模式允许通过复制现有对象来创建新对象,简化了创建过程,尤其适合于复杂算法的迭代开发。 2. **开发语言*...

    c++20设计模式-第4章-原型模式代码

    原型模式(Prototype Pattern)是其中一种行为设计模式,它允许我们通过复制现有对象来创建新对象,而不是通过传统方式实例化新对象。这一模式尤其适用于创建复杂或昂贵的对象,因为它提供了对象克隆的能力,从而...

    创建型模式之原型模式(Prototype Pattern)

    **原型模式(Prototype Pattern)详解** 在软件设计中,原型模式是一种创建型设计模式,它提供了一种通过复制已有对象来创建新对象的方式,避免了重复的构造过程,提高了代码的效率和可维护性。原型模式的核心思想...

    IOS设计模式浅析之原型模式(Prototype)--copy - iOS知识库1

    iOS中的原型模式(Prototype)是一种设计模式,它允许我们通过复制已有对象来创建新的对象,而无需知道具体的创建过程。这种模式在某些情况下能够提高代码的可复用性和效率,特别是当创建新对象的步骤复杂时。 原型...

    value-callic-prototype-change.rar_Change

    而"value-callic-prototype-change.js"则可能直接涉及到值类型函数原型变化的测试代码,它会创建各种场景来触发内联缓存的行为,然后检查结果是否符合预期。 总的来说,这个测试和相关文件关注的是JavaScript引擎的...

    Prototype模式

    **原型模式(Prototype Pattern)**是一种创建型设计模式,它提供了一种通过复制已有对象来创建新对象的方式,而不是通过构造函数。在某些情况下,当创建新对象的成本非常高时(例如,对象需要大量的初始化操作或者从...

    c++-设计模式之原型模式(Prototype Pattern)

    原型模式(Prototype Pattern)是一种创建型设计模式,允许通过复制现有对象来创建新对象,而不是通过类构造器。这种模式常用于需要频繁创建相似对象的场景,能够提高性能并减少内存使用。 原型模式的组成 原型接口...

    设计模式之Prototype(原型)

    "原型"(Prototype)设计模式是其中的一种,它的主要目标是通过复制现有的对象来创建新的对象,而不是通过构造函数来创建新实例。这种方法尤其适用于当创建新对象的过程复杂或者昂贵时,例如,当对象需要大量初始化...

    设计模式面面观(10):桥接模式(Bridge Pattern)-结构型模式

    (100%) 设计模式面面观(5):抽象工厂模式(AbstractFactory)-创建型模式 (100%) 设计模式面面观(6):生成器模式(Builder)-创建型模式 (100%) 设计模式面面观(7):原型模式(Prototype)-...

Global site tag (gtag.js) - Google Analytics