`
lovang
  • 浏览: 29668 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论
  • leayaya: 建议示例再做一下处理,比如实现和对象的操作换一下
    模式Bridge

模式Prototype

    博客分类:
  • java
阅读更多
设计模式之Prototype(原型)
定义:
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.
Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。
如何使用?
因为Java中的提供clone()方法来实现对象的克隆(具体了解clone()按这里),所以Prototype模式实现一下子变得很简单.
以勺子为例:
public abstract class AbstractSpoon implements Cloneable
{
  String spoonName;

  public void setSpoonName(String spoonName) {this.spoonName = spoonName;}
  public String getSpoonName() {return this.spoonName;}

  public Object clone()
  {
    Object object = null;
    try {
      object = super.clone();
    } catch (CloneNotSupportedException exception) {
      System.err.println("AbstractSpoon is not Cloneable");
    }
    return object;
  }
}
有两个具体实现(ConcretePrototype):
public class SoupSpoon extends AbstractSpoon
{
  public SoupSpoon()
  {
    setSpoonName("Soup Spoon");
  }
}
public class SaladSpoon extends AbstractSpoon
{
  public SaladSpoon()
  {
    setSpoonName("Salad Spoon");
  }
}
调用Prototype模式很简单:
AbstractSpoon spoon = new SoupSpoon();
AbstractSpoon spoon = new SaladSpoon();
当然也可以结合工厂模式来创建AbstractSpoon实例。
在Java中Prototype模式变成clone()方法的使用,由于Java的纯洁的面向对象特性,使得在Java中使用设计模式变得很自然,两者已经几乎是浑然一体了。这反映在很多模式上,如Interator遍历模式。
分享到:
评论

相关推荐

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

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

    原型模式 Prototype Pattern

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

    原型设计模式prototype

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

    设计模式之Prototype(原型)

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

    原型模式prototype

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

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

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

    Prototype模式

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

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

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

    23种设计模式整理pdf

    Prototype 模式是一种创建型模式,用于创建对象的副本。Prototype 模式的优点是可以快速地创建对象的副本,减少了对象创建的时间和空间开销。Prototype 模式的缺点是它可能会导致对象的耦合度增加。 3. Factory ...

    Java设计模式之Prototype原型模式

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

    C++设计模式.pdf

    Prototype模式使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。这在创建对象的代价较大,或者对象创建需要复杂初始化的情况下非常有用。 ### 结构型模式 #### Bridge模式 Bridge模式将抽象...

    php设计模式 Prototype (原型模式)代码

    "Prototype(原型模式)"是设计模式中的一种,它的主要思想是通过克隆已有对象来创建新对象,而不是通过传统的方式(如new操作符)来实例化。这样可以提高代码的效率,特别是在需要创建大量相似对象时。 在给定的...

    Java设计模式(泡妞经典版)

    Prototype 模式可以使得产品类不需要非得有任何事先确定的等级结构,Prototype 模式适用于任何的等级结构。 例如,在 Prototype 模式的例子中,可以通过复制原型对象来创建出更多同类型的对象,不需要知道产品的...

    设计模式精解-GoF23种设计模式解析附C实现源码.pdf

    Prototype模式通过复制已有实例来创建新对象,而不是通过构造函数创建新对象。这在创建复杂对象时可以提高效率,尤其是在构造函数开销大的情况下。 ### 结构型模式 #### 2.1 Bridge模式 Bridge模式将抽象部分与它...

    Prototype Pattern原型模式

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

    C++ 设计模式 (C++ 设计模式精解 + 代码实现)

    Prototype模式通过复制现有实例来创建新对象,而不是通过构造函数实例化对象。这在创建复杂对象的成本远高于复制成本时尤为有用。 ### 结构型模式 #### 2.1 Bridge模式 Bridge模式用于将抽象与其实现分离,使它们...

    设计模式之Prototype

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

    Prototype模式练习

    **原型模式(Prototype Pattern)**是一种常用的软件设计模式,它的主要思想是通过复制已有对象来创建新的对象,从而减少创建新对象的成本。在Java等面向对象编程语言中,原型模式经常被用来实现对象的克隆。在给定的...

    23种设计模式uml表示

    Prototype模式通过克隆现有的实例来创建新的实例,避免了创建新对象时的重复制备过程。这种模式适用于创建对象成本较高或者需要大量实例的情况。 ### 5. Adapter模式 Adapter模式将一个类的接口转换为客户期望的另...

Global site tag (gtag.js) - Google Analytics