java设计模式之Prototype(转存)

原创 2004年09月26日 10:45:00
定义:
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.

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 Pattern)

要理解原型原型模式必须先理解Java里的浅复制和深复制。有的地方,复制也叫做克隆。Java提供这两种克隆方式。 因为Java中的提供clone()方法来实现对象的克隆,所以Prototype模式实现一...
  • yanbober
  • yanbober
  • 2015年04月29日 11:28
  • 3030

设计模式总结之Prototype Pattern(原型模式)

用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
  • cooldragon
  • cooldragon
  • 2016年08月11日 00:43
  • 1436

设计模式实例(Lua)笔记之五(Prototype 模式)

1.描述      首先从实际生活来了解原型模式的由来,假设你有一份非常好的讲义,你的朋友也想要一份,那么怎么办?重新手抄一份?显然不是,当然是用复印机复印一份来得方便、直接,并且准确性也高,这种用原...
  • my183100521
  • my183100521
  • 2015年08月20日 10:37
  • 1341

读秦小波《设计模式之禅》 -- 工厂模式

设计模式是一种非常有用的编程技巧,它对于代码的重构有些非常重要的作用,对于软件开发人员来说,需要理解并尝试着使用这些设计的方法。      个人感觉《设计模式之禅》这本书中讲解的非常具体,每个模式都配...
  • DLUTBruceZhang
  • DLUTBruceZhang
  • 2014年12月25日 08:36
  • 2724

设计模式之禅学习笔记--策略模式

一、定义 定义一组算法,将每个算法都封装起来,并且使它们之间可以互换(实现相同的接口)。 二、通用类图 策略模式使用的就是面向对象的继承和多态机制,非常容易理解和掌握。 1:C...
  • xiang912
  • xiang912
  • 2015年05月14日 23:22
  • 615

java设计模式之美

设计模式的概述设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。我们在项...
  • li741350149
  • li741350149
  • 2016年12月14日 08:23
  • 478

java设计模式之Builder(转存)

Builder模式定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.Builder模式是一步一步创建一个复杂的对象,它允许用户可以只通过指定复杂对象的类型和内容就可以构建...
  • disizhishou
  • disizhishou
  • 2004年09月26日 10:46
  • 640

java设计模式之Factory(转存)

定义:提供创建对象的接口.为何使用?工厂模式是我们最常用的模式了,著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。为什么工厂模式是如此常用?因为工厂模式就相当于...
  • disizhishou
  • disizhishou
  • 2004年09月26日 10:44
  • 412

我与C++设计模式(四)——prototype pattern

我故意将bia
  • guozhengdong
  • guozhengdong
  • 2014年10月01日 10:20
  • 496

JAVA设计模式初探之组合模式

先看看组合模式的定义吧:“将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。”    就拿剪发办卡的事情来分析一下吧。    首先,一张卡可...
  • jason0539
  • jason0539
  • 2014年03月31日 08:40
  • 22725
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java设计模式之Prototype(转存)
举报原因:
原因补充:

(最多只允许输入30个字)