一、原型模式的定义:
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节。
工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。
二、如何使用:
因为Java中的提供clone()方法来实现对象的克隆,所以Prototype模式实现一下子变得很简单.
适用性:
1.当要实例化的类是在运行时刻指定时,例如,通过动态装载;
2.为了避免创建一个与产品类层次平行的工厂类层次时;
3.当一个类的实例只能有几个不同状态组合中的一种时。
在以上情况下,建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便一些。
三、创建实例: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");
}
}
调用Prototype模式很简单:
AbstractSpoon spoon = new SoupSpoon();
AbstractSpoon spoon2 = spoon.clone();
当然也可以结合工厂模式来创建AbstractSpoon实例。
在Java中Prototype模式变成clone()方法的使用,此方法执行的是该对象的“浅表复制”,而不“深层复制”操作。
四、说明:
克隆必须满足的条件:
a.对任何的对象x,都有:x.clone() != x,即克隆对象与原对象不是同一个对象。
b.对任何的对象x,都有:x.clone().getClass() == x.get getClass(),即克隆对象与原对象的类型是一样的。
c.如果对象x的equals()方法定义恰当的话,那么x.clone().equals(x)应当是成立的。
在java中实现clone()应该满足这三个条件。
浅复制:复制了值类型对象,对于引用类型对象,只复制了引用,它指向原来引用的对象。Java中clone为浅复制。
深复制:对值类型和引用类型的对象都生成一份新的拷贝. Java中可以通过串行化来进行深复制,前提是对象以及对象内部所引用的对象都是可串行化的,否则需要考虑将那些不可串行化的对象可否设为transient,排除在复制过程之外。
参考资料:http://hi.baidu.com/2006yuanxuelin/blog/item/4a5db4fb63755dc4b48f31e8.html
分享到:
相关推荐
本资料“《java设计模式》课后习题模拟试题解答——刘伟.zip”主要涵盖了Java设计模式的学习与应用,特别是针对刘伟教授的相关课程的课后习题及模拟试题的解答。 设计模式分为三大类:创建型、结构型和行为型模式。...
原型模式(Prototype Pattern)是一种创建型设计模式,它允许我们通过复制现有的对象来创建新对象,而无需知道具体创建过程的细节。这种模式的核心在于,它提供了一种对象克隆的简便方法,使得对象的创建过程对用户...
原型模式Java设计模式——原型模式概念使用场景Java里的克隆代码理解prototype(原型)问题总结优缺点模型优点模型缺点 概念 原型模式是创建型模式的最后一种,讲到原型模式就不得不提到克隆这个词,克隆这个词...
**原型模式(Prototype Pattern)**是软件设计模式中的结构型模式之一,主要用来简化实例化过程,减少类的创建。在原型模式中,一个对象可以被用作创建其他新对象的模板,通过复制已有对象来创建新对象,而不是通过new...
### Java设计模式之原型模式深度解析 #### 模式动机 在面向对象编程的世界里,对象的创建往往伴随着复杂的逻辑处理。特别是在某些场景下,对象的构造过程可能涉及大量资源的消耗,例如数据库连接、文件读写等。在...
《JAVA设计模式(中文).chm》是一部专为Java开发者准备的设计模式指南,它深入浅出地阐述了软件工程中的重要概念——设计模式。设计模式是解决常见编程问题的成熟解决方案,是经验丰富的开发者们在实践中总结出的最佳...
**Java设计模式——入门** 设计模式是软件开发中的一种最佳实践,它是在特定上下文中解决常见问题的经验总结。Java设计模式是面向对象编程中的一个重要概念,可以帮助开发者编写可复用、可维护、易于理解的代码。这...
原型模式是一种创建型设计模式,它允许我们创建对象的克隆,而无需知道具体的实现细节。在软件工程中,当我们需要创建多个相似的对象时,使用原型模式可以大大提高效率,避免了每次都去创建新的对象。这种模式是基于...
第3章GoF-CreationalDesignPatterns创建型设计模式 23 3.1SimpleFactoryPattern(简单工厂模式) 24 3.1.1定义 24 3.1.2现实例子——国旗生产厂 26 3.1.3C#实例1——电子付款系统 26 3.1.4C#实例2——学校登录...
六个创建型模式 六个创建型模式 简单工厂模式-Simple Factory Pattern 工厂三兄弟之简单工厂模式(一) 工厂三兄弟之简单工厂模式(二) 工厂三兄弟之简单工厂模式(三) 工厂三兄弟之简单工厂模式(四) 工厂方法...
原型模式是一种创建型设计模式,它通过复制现有的实例来创建新对象,而不是通过构造函数来创建新的对象。在追MM的过程中,如果你找到了一种成功的聊天方式或者礼物类型,就可以将其作为原型复制到其他MM身上,从而...
1. 创建型模式(Creational Patterns):主要处理对象的创建,包括单例模式(Singleton)、工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式(Prototype)。...
第二章至第五章,作者们详细讲解了五种创建型设计模式:单例模式(Singleton)、工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式(Prototype)。这五种模式都...
- **定义**:原型模式是一种创建型设计模式,它通过复制一个现有的实例来创建新对象,而不是通过执行构造函数来创建新对象。 - **例子**:当你和女朋友聊天时,可以提前准备一些甜蜜的话语模板,需要时只需复制粘贴...
1. **创建型模式**:Singleton(单例)、Factory Method(工厂方法)、Abstract Factory(抽象工厂)、Builder(建造者)、Prototype(原型)。 2. **结构型模式**:Adapter(适配器)、Bridge(桥接)、Composite...
本文将深入探讨设计模式的基本概念,并详细介绍三种主要的设计模式分类——创建型模式、结构型模式以及行为型模式。 ### 创建型模式 创建型模式主要用于对象的创建过程,旨在通过不同的方式控制对象的创建过程,...
本文将深入探讨Java设计模式中的一个关键概念——原型模式(Prototype Pattern)。原型模式是一种创建型设计模式,它允许我们通过复制已有对象来创建新对象,而不是通过传统的方式从头构建。这种模式特别适用于当...
设计模式通常分为三大类:创建型模式、结构型模式和行为型模式。 - **创建型模式**关注于对象的创建机制,确保系统在合适的时候创建正确的对象。 - **结构型模式**涉及如何组合类或对象来获得更大的结构。 - **行为...