`
hrsvici412
  • 浏览: 75061 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

原型(prototype)模式1

阅读更多

要理解原型原型模式必须先理解Java里的浅复制和深复制。有的地方,复制也叫做克隆。Java提供这两种克隆方式。

浅克隆:被克隆对象的所有变量都含有与原来的对象相同的值,而它所有的对其他对象的引用都仍然指向原来的对象。换一种说法就是浅克隆仅仅克隆所考虑的对象,而不克隆它所引用的对象。

深克隆:被克隆对象的所有变量都含有与原来的对象相同的值,但它所有的对其他对象的引用不再是原有的,而这是指向被复制过的新对象。换言之,深复制把要复制的对象的所有引用的对象都复制了一遍,这种叫做间接复制。深复制的源代码如下:

public Object deepClone() throws IOException, OptionalDataException, ClassNotFoundException

 {

     //write to stream

     ByteArrayOutputStream bo = new ByteArrayOutputStream();

     ObjectOutputStream oo = new ObjectOutputStream(bo);

     oo.writeObject(this);        //read from stream      ByteArrayInputStream bi = new ByteArrayInputStream(bo.toByteArray());

     ObjectInputStream oi = new ObjectInputStream(bi);

       return (oi.readObject());

 }

Java语言的构建模型直接支持原型模型模式,所有要克隆的类必须实现一个标识接口Cloneable。所有的类都有一个Clone()方法(Object提供)。克隆满足的条件:对于任何对象x,都有x.clone()!=x,换言之,克隆的对象不是原来的对象;x.clone().getClass()==x.getClass(),换言之,克隆的对象与原对象是同一类型。x.clone().equals(x)成立。

public class Sheep implements Cloneable

{

    private String name = "Dolly";

    public Object clone() throws CloneNotSupportedException

    {

  return super.clone();

    }

}

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Prototype模式

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

    原型设计模式prototype

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

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

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

    原型模式prototype

    1. **原型(Prototype)**: 这是模式中的关键角色,定义了接口用于创建克隆对象。原型对象通常是已经初始化好的,具备了需要复制的属性和状态。 2. **具体原型(Concrete Prototype)**: 实现了原型接口,提供了...

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

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

    Prototype Pattern原型模式

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

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

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

    原型模式(Prototype)

    1. **原型(Prototype)**:这是模式的核心,它定义了接口用于复制自己。原型对象通常是具体的类,实现了克隆方法。 2. **具体原型(Concrete Prototype)**:实现原型接口,提供复制自身的实现。这可能是深拷贝(包括...

    23种设计模式之Prototype模式代码

    **原型模式(Prototype模式)**是软件设计模式中的一个经典模式,属于创建型模式。它提供了一种通过复制现有的对象来创建新对象的方式,而无需知道具体创建过程的细节。这种模式在需要频繁创建相似对象时非常有用,...

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

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

    [创建型模式]设计模之原型模式(Prototype Pattern)

    **原型模式(Prototype Pattern)**是一种创建型设计模式,它允许我们通过复制现有的对象来创建新对象,而不是通过构造函数或工厂方法。这种模式的核心在于,它提供了一种更高效、更灵活的方式来创建新实例,特别是在...

    设计模式之Prototype(原型)

    Prototype模式的核心在于实现克隆操作。在Java中,我们可以利用`Cloneable`接口和`clone()`方法来实现对象的复制。但是需要注意,不是所有类都能直接使用`clone()`方法,因为默认的`clone()`方法仅复制对象的引用,...

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

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

    原型模式 Prototype Pattern

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

    原型模式实践代码

    1. **原型类(Prototype)**:这是要被克隆的类,它实现`Cloneable`接口并重写`clone()`方法。例如: ```java public class Prototype implements Cloneable { private String property; // getters and setters ...

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

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

    设计模式之原型模式

    1. **原型(Prototype)**:这是模式的核心,是一个实现了克隆接口的对象。它提供了一种创建新对象的方式,即通过复制自己来创建新对象。 2. **克隆(Cloneable)**:在Java中,原型对象需要实现`Cloneable`接口,该接口...

    prototype原型模式

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

    android设计模式之原型模式

    本文将深入探讨Android设计模式中的“原型模式”(Prototype Pattern),并结合提供的"prototype"压缩包中的示例代码进行解析。 原型模式是一种创建型设计模式,它的主要思想是通过复制已有对象来创建新对象,而...

    设计模式——原型模式

    1. **原型接口(Prototype Interface)** 在原型模式中,首先需要定义一个接口或抽象类,这个接口或抽象类通常叫做`Prototype`,它声明了一个`clone()`方法,用于返回对象的一个副本。例如: ```java public ...

Global site tag (gtag.js) - Google Analytics