`

原型模式Prototype 克隆生成对象

阅读更多
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

public interface Prototype {
  public Prototype clone();
}

public class ConcretePrototype1 implements Prototype {
  public Prototype clone() {
    Prototype prototype = new ConcretePrototype1();
    return prototype;
  }
}

public class ConcretePrototype2 implements Prototype {
  public Prototype clone() {
    Prototype prototype = new ConcretePrototype2();
    return prototype;
  }
}

客户端:
public class Client {
  private Prototype prototype;
  public Client(Prototype prototype) {
    this.prototype = prototype;
  }
  public void operation() {
    Prototype newPrototype = prototype.clone();
  }
}

需要克隆功能的类,只需要实现Cloneable接口。

super.clone():创建当前对象的浅表副本。方法是创建一个新对象,然后将当前对象的非静态字段复制到该新对象。

如果字段是值类型的,则对该字段执行逐位复制。
如果字段是引用类型的,则复制引用但不复制引用的对象;因此,原始对象及其副本引用同一对象。
一般在初始化的信息不发生变化的情况下,克隆是最好的办法。

浅复制(浅度克隆):被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用都仍然指向原来的对象。

深复制(深度克隆):把引用对象的变量指向复制过的新对象而不是原有的被引用的对象。

数据集对象DataSet,它的clone()方法用来复制DataSet的结构,但不复制DataSet的数据。

obj.setProduct((Product)this.product.clone());

最大的缺点是每个原型的子类都必须实现clone的操作,尤其在包含引用类型的对象时,clone方法会比较麻烦,必须要能够递归地让所有的相关对象都要正确地实现克隆。
分享到:
评论

相关推荐

    原型模式prototype

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

    Prototype模式

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

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

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

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

    在软件设计中,原型模式是一种创建型设计模式,它提供了一种通过复制已有对象来创建新对象的方式,避免了重复的构造过程,提高了代码的效率和可维护性。原型模式的核心思想是利用对象的克隆功能来实现新对象的创建,...

    原型模式 Prototype Pattern

    ### 原型模式 Prototype Pattern #### 概述 原型模式是一种创建型设计模式,它允许用户通过复制现有的实例来创建新的对象,而不是通过传统的构造器来创建对象。这种模式适用于那些创建对象的成本较高,或者当对象...

    设计模式之原型模式Java实现和类设计图

    原型模式(Prototype Pattern)是其中一种行为设计模式,主要用于对象创建。它通过复制已有对象来创建新对象,而不是通过传统的构造函数来创建。在Java中,原型模式可以有效地提高性能,特别是在创建复杂对象时。 #...

    设计模式之Prototype

    "原型"(Prototype)模式是其中的一种行为设计模式,它主要用于简化对象的创建过程,通过复制已有对象来生成新对象,而非每次都创建一个新的实例。这种模式在需要大量相似对象时尤其有效,可以避免重复代码并提高...

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

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

    设计模式之原型模式

    原型模式是设计模式中的一种,它是Java 23种经典设计模式之一,主要用来提高对象创建的效率。在原型模式中,我们通过复制或克隆一个已经存在的对象来创建新的对象,而不是通过构造函数来创建。这种方法尤其适用于当...

    设计模式原型模式PPT学习教案.pptx

    原型模式的概念源于孙悟空的“拔毛变小猴”的神话故事,这种能力在软件开发中被抽象为复制一个对象并生成与原对象相同的新对象。原型模式定义如下:通过原型实例指定待创建对象的类型,并通过复制原型来创建新的对象...

    原型模式PPT文档

    原型模式是一种创建型设计模式,它允许我们创建对象的克隆,而无需知道具体的实现细节。在软件工程中,当我们需要创建多个相似的对象时,使用原型模式可以大大提高效率,避免了每次都去创建新的对象。这种模式是基于...

    prototype原型模式

    原型模式是一种设计模式,属于创建型模式,它提供了一种创建对象的最佳方式。在原型模式中,一个对象可以在不创建新实例的情况下进行克隆,从而产生一个与原对象相同或几乎相同的新对象。这种模式主要涉及到`拷贝...

    PHP设计模式(四)原型模式Prototype实例详解【创建型】

    原型模式(Prototype)是一种创建型设计模式,它的核心思想是通过复制已有对象来创建新对象,以减少重复的构造过程,提高代码效率。在PHP中,原型模式通常通过对象的克隆(clone)操作来实现。 1. **概述** 原型...

    Java 23种设计模式08原型模式.pdf

    **原型模式**(Prototype Pattern)是一种创建型设计模式,它通过复制一个现有的实例来创建新对象,而不是通过传统的构造函数进行创建。这种模式的关键在于利用现有的实例作为模板,通过复制这个模板对象来生成新的...

    实验六:原型模式.rar

    原型模式是其中一种经典的设计模式,它属于创建型模式,主要应用于对象复制或克隆场景。在这个实验六:“原型模式.rar”中,我们将深入理解并实践如何在Java中实现原型模式。 首先,原型模式的核心思想是通过拷贝已...

    装饰器模式、原型模式、享元模式

    例如,可以使用原型模式快速生成具有基本特性的对象,然后用装饰器模式添加特定的业务逻辑,最后通过享元模式减少内存消耗。同时,理解并熟练运用这些模式也是成为一名优秀IT专业人员的必备技能。

    [创建型模式] 原型模式的理解

    原型模式(Prototype Pattern)是一种创建型设计模式,它允许我们通过复制现有的对象来创建新对象,而无需知道具体创建过程的细节。这种模式的核心在于,它提供了一种更灵活的创建对象的方式,避免了复杂的构造过程...

    Java原型模式

    1. **原型(Prototype)**: 在原型模式中,一个对象可以被克隆以创建一个新的对象。这个原始的对象就被称为原型。 2. **深拷贝与浅拷贝**: Java中的clone()方法默认执行的是浅拷贝,即只复制对象本身,不复制对象...

    005Prototype.rar

    原型模式(Prototype Mode)是软件设计模式中的一种,它的主要思想是通过复制已有对象来创建新的对象,从而减少创建新对象的成本。这种模式在实际应用中尤其适用于对象创建过程复杂或者资源消耗较大的情况。 在面向...

Global site tag (gtag.js) - Google Analytics