`
三里小龙
  • 浏览: 86299 次
  • 性别: Icon_minigender_1
  • 来自: 孝感
社区版块
存档分类
最新评论

原型模式

阅读更多

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

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

 

package org.fanzone.pattern.prototype;


/** 

 * Title: base<br> 

 * Description: Prototype<br> 

 * Copyright: Copyright (c) 2011 <br> 

 * Create DateTime: Jul 7, 2011 8:34:01 PM <br> 

 * @author wangmeng

 */

public abstract class Animal implements Cloneable{


String statement;


public String getStatement() {

return statement;

}

public void setStatement(String statement) {

this.statement = statement;

}

public Object clone(){

Object obj = null;

try {

obj = this.getClass().newInstance();

} catch (InstantiationException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

e.printStackTrace();

}

return obj;

}

}

--------------------------------------------------------
package org.mars.pattern.prototype;

/** 
 * Title: base<br> 
 * Description: Concrete Prototype to clone.<br> 
 * Copyright: Copyright (c) 2011 <br> 
 * Create DateTime: Jul 7, 2011 8:44:24 PM <br> 
 * @author wangmeng
 */
public class DonaldDuck extends Animal {

public DonaldDuck() {
this.setStatement("Hi,everyone! I'm the Donald Duck.");
}
}
--------------------------------------------------------------------------
package org.mars.pattern.prototype;

/** 
 * Title: base<br> 
 * Description: Concrete Prototype to clone.<br> 
 * Copyright: Copyright (c) 2011 <br> 
 * Create DateTime: Jul 7, 2011 8:40:03 PM <br> 
 * @author wangmeng
 */
public class MickeyMouse extends Animal {

public MickeyMouse(){
this.setStatement("Hello,everybody! I'm the Mickey Mouse.");
}
}
----------------------------------------------------------------------------
package org.mars.pattern.prototype;

/** 
 * Title: base<br> 
 * Description: Client<br> 
 * Copyright: Copyright (c) 2011 <br> 
 * Create DateTime: Jul 7, 2011 8:48:31 PM <br> 
 * @author wangmeng
 */
public class Zoo {

private Animal animal;

public Zoo(Animal animal){
this.animal = animal;
}
public Animal makeAnimal(){
return (Animal) this.animal.clone();
}
@Override
protected Object clone() throws CloneNotSupportedException {
//This clone is not the same as the CLONE that defined by myself.
return super.clone();
}
public static void main(String[] args){
Zoo zoo = null;
Animal animal = null;
DonaldDuck duck = new DonaldDuck();
MickeyMouse mouse = new MickeyMouse();
//Make three ducks.
//Set the prototype.
zoo = new Zoo(duck);
for(int i=0; i<3; i++){
//#Get many objects by copying prototype.
//#(Just see the hashCode of object and the answer is front.)
animal = zoo.makeAnimal();
System.out.println(animal.hashCode() + ": " + animal.getStatement());
}
//Make two mice.
zoo = new Zoo(mouse);
for(int i=0; i<2; i++){
animal = zoo.makeAnimal();
System.out.println(animal.hashCode() + ": " + animal.getStatement());
}
}
}

 

 

分享到:
评论

相关推荐

    设计模式之原型模式

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

    设计模式的原型模式的例子

    原型模式(Prototype Pattern)是软件设计模式中的一种结构型模式,它的主要目的是通过复制已有对象来创建新对象,从而减少创建新对象的成本。在原型模式中,类的实例化过程被替换为对已有实例的克隆操作,尤其适用...

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

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

    iOS设计模式之原型模式

    本文将深入探讨一种常见的设计模式——原型模式(Prototype Pattern),并结合具体的iOS应用场景进行解析。 原型模式是一种创建型设计模式,它的主要思想是通过复制已有对象来创建新对象,而不是通过构造函数来创建...

    android设计模式之原型模式

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

    设计模式——原型模式

    原型模式(Prototype Pattern)是一种创建型设计模式,它允许我们通过复制现有的对象来创建新对象,而无需知道具体创建过程的细节。这种模式的核心在于,它提供了一种对象克隆的简便方法,使得对象的创建过程对用户...

    设计模式专题之(五)原型模式---设计模式原型模式示例代码(python--c++)

    原型模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在原型模式中,一个对象可以被克隆以创建新对象,而无需知道具体的创建细节。这种模式在需要重复创建相似对象时非常有用,避免了每次创建新对象时都...

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

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

    基于Java实现的23种设计模式Demo,抽象工厂模式、建造模式、工厂方法模式、原型模式、单例模式、外观模式、适配器模式等

    基于Java实现的23种设计模式Demo,抽象工厂模式、建造模式、工厂方法模式、原型模式、单例模式、外观模式、适配器模式等 Java设计模式共有23种,分别为:抽象工厂模式、建造模式、工厂方法模式、原型模式、单例模式...

    java设计模式【之】原型模式、深拷贝与浅拷贝【源码】【场景:克隆羊】

    java设计模式【之】原型模式、深拷贝与浅拷贝【源码】【场景:克隆羊】 * 原型模式(Prototype) * 实现方式: * 需要被克隆的 class类, 重写Object中的clone()方法,并实现Cloneable接口(否则报错 ...

    ava常用设计模式-原型模式

    ava常用设计模式-原型模式 原型模式(Prototype Pattern)是一种创建型设计模式,允许通过复制现有对象来创建新对象,而不是通过实例化类来创建新对象。在需要创建大量相似对象时非常有用,它可以避免重复创建对象...

    设计模式之原型模式.docx

    【设计模式之原型模式】 设计模式是软件工程中的一种最佳实践,是对在特定上下文中反复出现的软件设计问题的解决方案。原型模式属于对象创建型模式,它的主要思想是通过复制已有对象来创建新对象,降低了类的实例化...

    C#23种设计模式样例代码和UML图

    C#23种设计模式样例代码和UML图等 创建型模式(抽象工厂模式、工厂方法模式、单例模式、建造者模式、原型模式); 行为型模式(策略模式、 迭代器模式、原型模式、职责链模式、 模板方法、 命令模式、 解释器模式、 ...

    Java设计模式-原型模式详解

    Java 设计模式 - 原型模式详解 原型模式是 Java 设计模式之一,它用于创建对象时,指定创建对象的类型,并通过拷贝这些原型创建新的对象。该模式的思想就是将一个对象作为原型,对其进行复制、克隆,产生一个和原...

    前端设计模式大全,包括工厂模式,原型模式,构造器模式等

    本资料集包含了多种重要的前端设计模式,如工厂模式、原型模式和构造器模式,下面将详细阐述这些模式的核心概念和应用。 1. 工厂模式: 工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式,通过抽象出...

Global site tag (gtag.js) - Google Analytics