- 浏览: 102581 次
- 性别:
- 来自: 深圳
文章分类
最新评论
Prototype模式也叫原型模式,是由GoF提出的23种设计模式中的一种。Prototype模式是一种对象创建型模式,它采取复制原型对象的方法来创建对象的实例。使用Prototype模式创建的实例,具有与原型一样的数据。
本文介绍设计模式中的原型(Prototype)模式的概念,用法,以及实际应用中怎么样使用Prototype模式进行开发。
但Prototype模式的对象创建方法,具有以下特点:
- 由原型对象自身创建目标对象。也就是说,对象创建这一动作发自原型对象本身。
- 目标对象是原型对象的一个克隆。也就是说,通过Prototype模式创建的对象,不仅仅与原型对象具有相同的结构,还与原型对象具有相同的值。
- 根据对象克隆深度层次的不同,有浅度克隆与深度克隆。
有关Java语言克隆技术的描述,请参考:
Java语言的克隆与深层次克隆技术入门与精通 一文。
简单一点说,
Prototype模式提供一种方法,让类的对象可以实现对自身的复制。
- 希望对目标对象的修改不影响既有的原型对象(深度克隆的时候可以完全互不影响)。
- 隐藏克隆操作的细节。很多时候,对对象本身的克隆需要涉及到类本身的数据细节。
现实生活中,就有许多这样的例子:
生物细胞的自身复制;根据产品模型生产产品等等
Prototype {
+clone():Prototype
}
即:原型类Prototype 提供clone()方法,实现对对象自身的复制(克隆)。
Java语言提供了对象复制的机制,Prototype模式的Java实现一般也通过实现Cloneable接口来实现。
这里我们也通过实现Cloneable接口来说明Prototype模式。
这里使用了一个简单的例子说明了Prototype模式的对象创建过程与方法。里面省略了某些无关紧要的代码。
Prototype模式的概念
Prototype模式是一种对象创建型模式,它跟工厂模式,Builder模式等一样,都用来创建类的实例对象。但Prototype模式的对象创建方法,具有以下特点:
- 由原型对象自身创建目标对象。也就是说,对象创建这一动作发自原型对象本身。
- 目标对象是原型对象的一个克隆。也就是说,通过Prototype模式创建的对象,不仅仅与原型对象具有相同的结构,还与原型对象具有相同的值。
- 根据对象克隆深度层次的不同,有浅度克隆与深度克隆。
有关Java语言克隆技术的描述,请参考:
Java语言的克隆与深层次克隆技术入门与精通 一文。
简单一点说,
Prototype模式提供一种方法,让类的对象可以实现对自身的复制。
Prototype模式的应用场景:
- 在创建对象的时候,我们不只是希望被创建的对象继承其基类的基本结构,还希望继承原型对象的数据。- 希望对目标对象的修改不影响既有的原型对象(深度克隆的时候可以完全互不影响)。
- 隐藏克隆操作的细节。很多时候,对对象本身的克隆需要涉及到类本身的数据细节。
现实生活中,就有许多这样的例子:
生物细胞的自身复制;根据产品模型生产产品等等
Prototype模式的模型定义:
Prototype {
+clone():Prototype
}
即:原型类Prototype 提供clone()方法,实现对对象自身的复制(克隆)。
Prototype模式的实现范例
下面我们使用Prototype模式来实现细胞(Cell)的自身复制过程。Java语言提供了对象复制的机制,Prototype模式的Java实现一般也通过实现Cloneable接口来实现。
这里我们也通过实现Cloneable接口来说明Prototype模式。
public class Cell implements Cloneable {
//细胞壁
private String cellWall;
//细胞膜
private String cellMembrane;
//细胞组织
private String cellularTissue;
...//这里省略掉了对成员变量的setter/getter方法的定义
//细胞的自身复制
//这里重载了Obect#clone()方法,为了方便外部调用,把返回值由Object修改为Cell,并把访问级别设置为public
public Cell clone() {
try {
//只需简单地调用super.clone();即可
return (Cell)super.clone();
} catch (CloneNotSupportedException e) {
throw (new InternalError(e.getMessage()));
}
}
}
//调用方:
public class Client {
public static void main(String[] args) {
//准备原型细胞
Cell cell = new Cell();
cell.setCellWall("cell wall 1");
...
//克隆原型细胞
Cell clonedCell = cell.clone();
...
//操作被克隆的细胞(略)
}
}
//细胞壁
private String cellWall;
//细胞膜
private String cellMembrane;
//细胞组织
private String cellularTissue;
...//这里省略掉了对成员变量的setter/getter方法的定义
//细胞的自身复制
//这里重载了Obect#clone()方法,为了方便外部调用,把返回值由Object修改为Cell,并把访问级别设置为public
public Cell clone() {
try {
//只需简单地调用super.clone();即可
return (Cell)super.clone();
} catch (CloneNotSupportedException e) {
throw (new InternalError(e.getMessage()));
}
}
}
//调用方:
public class Client {
public static void main(String[] args) {
//准备原型细胞
Cell cell = new Cell();
cell.setCellWall("cell wall 1");
...
//克隆原型细胞
Cell clonedCell = cell.clone();
...
//操作被克隆的细胞(略)
}
}
这里使用了一个简单的例子说明了Prototype模式的对象创建过程与方法。里面省略了某些无关紧要的代码。
发表评论
-
设计模式之 State - 状态模式
2010-12-18 16:49 1116State模式也叫状态模式,是由GoF提出的23种软件设计模式 ... -
设计模式之 Strategy - 策略模式
2010-12-18 16:46 1385Strategy模式也叫策略模 ... -
设计模式之 Visitor - 访问者模式
2010-12-18 16:45 1478Visitor模式也叫访问者 ... -
设计模式之 Template Method - 模板方法模式
2010-12-18 16:41 1599Template Method模式也叫模板方法模式,是由G ... -
设计模式之 Observer - 观察者模式
2010-12-18 16:33 1432Observer模式也叫观察者 ... -
设计模式之 Memento - 备忘录模式
2010-12-18 16:31 1084Memento模式也叫备忘录 ... -
设计模式之 Mediator - 中介者模式
2010-12-18 16:29 1144Mediator模式也叫中介者模式,是由GoF提出的23种软件 ... -
设计模式之 Iterator - 迭代模式
2010-12-18 16:27 1194Iterator模式也叫迭代模式,是由GoF提出的23种设 ... -
设计模式之 Interpreter - 解释器模式
2010-12-18 16:23 1028Interpreter模式也叫解释器模式,是由GoF提出的 ... -
设计模式之 Command - 命令模式
2010-12-18 16:20 912Command(CoR)模式也叫命 ... -
设计模式之 Chain of Responsibility - 职责链模式
2010-12-18 16:18 1229Chain of Responsibility(CoR)模 ... -
设计模式之 Proxy - 代理模式
2010-12-16 23:45 1084Proxy模式也叫代理模式,是由GoF提出的23种软件设计 ... -
设计模式之 Flyweight - 享元模式
2010-12-16 23:42 1076Flyweight模式也叫享元模式,是由GoF提出的23种 ... -
设计模式之 Facade - 外观模式
2010-12-16 23:41 1034Facade模式也叫外观模式 ... -
设计模式之 Singleton - 单态模式
2010-11-26 11:58 883Singleton模式也叫单态模式,是由GoF提出的2 ... -
设计模式之 Decorator - 装饰模式
2010-11-25 23:48 833装饰模式,The Decorator Pattern atta ... -
设计模式之 Composite - 组合模式
2010-11-25 23:35 1489Composite模式也叫组合 ... -
设计模式之 Bridge - 桥接模式
2010-11-25 23:08 1041Bridge模式也叫桥接模式,是由GoF提出的23种软件设计模 ... -
设计模式之 Adapter - 适配器模式
2010-11-25 22:58 945Adapter模式也叫适配器模式,是由GoF提出的23种设 ... -
设计模式之 Builder - 建造者模式
2010-11-18 23:51 1090Builder模式也叫建造者模式或者生成器模式,是由GoF ...
相关推荐
"原型"(Prototype)设计模式是其中的一种,它的主要目标是通过复制现有的对象来创建新的对象,而不是通过构造函数来创建新实例。这种方法尤其适用于当创建新对象的过程复杂或者昂贵时,例如,当对象需要大量初始化...
在Prototype-IX EA中,交易逻辑可能会基于各种技术指标、价格行为模式或者特定的数学模型。例如,它可能使用移动平均线来识别趋势,或者结合相对强弱指数(RSI)来判断超买或超卖状态。同时,EA可能还包含了风险管理...
根据给定文件内容,以下是关于Java设计模式的知识点说明: 1. 策略模式(Strategy Pattern)是一种行为设计模式,允许在运行时选择算法的行为。策略模式的意图是定义一系列算法,将每个算法封装起来,并使它们可以...
iOS中的原型模式(Prototype)是一种设计模式,它允许我们通过复制已有对象来创建新的对象,而无需知道具体的创建过程。这种模式在某些情况下能够提高代码的可复用性和效率,特别是当创建新对象的步骤复杂时。 原型...
**原型设计模式(Prototype Pattern)**是一种创建型设计模式,它允许我们通过复制现有的对象来创建新对象,而不是通过构造函数来实例化新对象。在面向对象编程中,当我们需要频繁地创建具有相同或相似属性的对象时,...
Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。...
通过分析Prototype 1.4.0的源码,我们可以更深入地理解JavaScript的设计模式和最佳实践,提升我们的编程技巧。尽管随着技术的发展,新的库和框架层出不穷,但Prototype的许多设计理念和方法仍被广泛借鉴,对学习和...
在本设计模式课程设计中,我们重点探讨了五个核心的设计模式:原型模式、单例模式、抽象工厂模式、代理模式和建造者模式。这些模式在Java编程中具有广泛的应用,能够帮助开发者创建更加灵活、可扩展和易于维护的代码...
**原型模式(Prototype模式)**是软件设计模式中的一个经典模式,属于创建型模式。它提供了一种通过复制现有的对象来创建新对象的方式,而无需知道具体创建过程的细节。这种模式在需要频繁创建相似对象时非常有用,...
在给定的文件"设计模式之Prototype(圆形).doc"中,可能详细阐述了如何将Prototype模式应用于创建圆形对象的例子。在这种情况下,可能会有一个Circle类作为具体原型,它实现了Prototype接口,并且提供了克隆圆形对象...
GoF(Gang of Four)所提出的23种设计模式,被认为是面向对象编程中最核心的设计原则之一。这些模式可以帮助开发者解决常见的编程问题,并提高代码的可复用性和可维护性。 #### 创建型模式 创建型模式关注的是对象...
5. **Prototype模式**:Prototype模式也是一种创建型设计模式,它通过克隆已有对象来创建新的对象,而不是创建全新的实例。这种方式可以节省内存,特别是在创建相似但又有微小差异的对象时。 6. **Command模式**:...
原型模式(Prototype Pattern)是一种创建型设计模式,允许通过复制现有对象来创建新对象,而不是通过类构造器。这种模式常用于需要频繁创建相似对象的场景,能够提高性能并减少内存使用。 原型模式的组成 原型接口...
设计模式是软件工程中的一种最佳实践,它们是解决常见编程问题的经验总结,为软件开发提供了可复用的解决方案。在面向对象编程中,设计模式基于一些基本原则,这些原则构成了良好设计的基础。本篇将深入探讨23种设计...
C#设计模式(9)-Prototype Pattern C#设计模式(8)-Builder Pattern C#设计模式(7)-Singleton Pattern C#设计模式(6)-Abstract Factory Pattern C#设计模式(5)-Factory Method Pattern C#设计模式(4)...
本篇文章将深入探讨“原型模式(Prototype)”这一经典的设计模式,它是面向对象设计的一个重要概念,尤其在C++编程中有着广泛的应用。 原型模式是一种创建型设计模式,它的核心思想是通过复制已有对象来创建新对象,...
原型模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在原型模式中,一个对象可以被克隆以创建新对象,而无需知道具体的创建细节。这种模式在需要重复创建相似对象时非常有用,避免了每次创建新对象时都...
设计模式之Prototype(原型) 设计模式之Builder 设计模式之Singleton(单态) 结构模式: 设计模式之Facade(外观) 设计模式之Proxy(代理) 设计模式之Adapter(适配器) 设计模式之Composite(组合) 设计模式之Decorator...
《C#设计模式》是一本深入探讨C#编程语言中设计模式的专业书籍,它涵盖了软件开发中的各种经典设计模式,旨在提升代码的可维护性、可扩展性和复用性。设计模式是经过时间考验的解决方案,是软件工程中的宝贵经验结晶...
同时,掌握Prototype库也有助于理解其他JavaScript库,比如jQuery,因为很多设计理念和模式是相通的。 总而言之,《prototype-chm 操作手册》是一份全面而深入的参考资料,无论是对新手还是有一定经验的开发者,都...