`
deejay
  • 浏览: 144962 次
  • 性别: 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();  
分享到:
评论

相关推荐

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

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

    C#面向对象设计模式纵横谈\6 Prototype原型模式创建型模式.part1.rar

    在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均... 这是第6节:Prototype原型模式创建型模式.part1

    C#面向对象设计模式纵横谈\6 Prototype原型模式创建型模式.part2.rar

    在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均... 这是第6节:Prototype原型模式创建型模式.part2

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

    本篇文章将深入探讨C#中的“原型模式”(Prototype Pattern),这是一种创建型设计模式,它允许我们通过复制已有对象来创建新对象,而不是从零开始创建。 原型模式的核心思想是克隆。在C#中,对象的克隆可以通过...

    Java设计模式之Prototype原型模式

    Java设计模式之Prototype原型模式 Prototype原型模式是Java设计模式中的一种创建型模式,它主要用于对象的克隆和创建。该模式的主要思想是将一个对象作为原型,然后通过克隆该对象来创建新的对象,从而实现对象的...

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

    原型模式(Prototype Pattern)是一种创建型设计模式,它允许我们通过复制现有的对象来创建新对象,而无需知道具体创建过程的细节。在C#中,原型模式是通过接口或抽象类来实现的,通常涉及`ICloneable`接口或者...

    prototype原型模式

    - `prototype.pro` 是Qt项目文件,用于编译和构建原型模式的示例。 - `readme.txt` 可能是项目说明文件,包含关于如何运行和理解代码的指导。 - `mainwindow.ui` 是Qt Designer生成的用户界面描述文件,描述了GUI的...

    原型设计模式prototype

    在面向对象编程中,当我们需要频繁地创建具有相同或相似属性的对象时,原型模式可以极大地提高效率。 ### 模式原理 在原型模式中,一个类定义了创建新对象的接口,而其实现由它的子类完成。这个接口通常只有一个...

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

    即原型模式,提供一个已经存在的对象进行新对象创建的接口,一般情况下都是使用Clone接口。 此模式非常简单,简单的说就是复制多个当前对象供使用。Prototype模式允许一个对象再创建另外一个可定制的对象,根本...

    Prototype Pattern原型模式

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

    Prototype模式

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

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

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

    设计模式C++学习之原型模式(Prototype)

    本篇文章将深入探讨“原型模式(Prototype)”这一经典的设计模式,它是面向对象设计的一个重要概念,尤其在C++编程中有着广泛的应用。 原型模式是一种创建型设计模式,它的核心思想是通过复制已有对象来创建新对象,...

    解析设计模式中的Prototype原型模式及在C++中的使用

    原型模式的意图是用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 适用性  当要实例化的类是在运行时刻指定时,例如,通过动态装载;或者 为了避免创建一个与产品类层次平行的工厂类层次时;...

    原型模式(Prototype)

    **原型模式(Prototype)** 原型模式是一种创建型设计模式,它提供了一种通过复制已有对象来创建新对象的方式,而不是通过传统的构造函数。这种模式在系统中需要创建大量相似对象时特别有用,可以提高效率并减少内存...

    原型模式prototype

    **原型模式(Prototype)**是软件设计模式中的一种,它属于创建型模式,主要用于简化对象的创建过程,通过复制已有对象来生成新对象,避免了重复的构造过程,提高了代码的效率和可维护性。在Java、C#等面向对象语言...

    原型模式(ProtoType)C#应用案例

    原型模式(Prototype)是一种软件设计模式,主要用于简化创建对象的过程,尤其当对象的构造过程复杂时。在C#中,我们可以利用接口或者继承来实现这一模式。本案例将深入探讨如何在C#环境中运用原型模式。 首先,...

    原型模式实践代码

    原型模式是一种设计模式,主要应用于软件工程领域,用于创建重复的对象,而无需再次进行实例化。在Java、C#等面向对象的语言中,原型模式通过实现`Cloneable`接口或使用序列化机制来实现对象的复制。在这个"原型模式...

Global site tag (gtag.js) - Google Analytics