- 浏览: 370326 次
- 性别:
- 来自: Alien
文章分类
最新评论
-
风一样的男人__:
[flash=200,200][url]引用[/url][/f ...
java线程内存模型,线程、工作内存、主内存 -
极乐君:
厉害了,,,请问可以转载到我们专栏吗?会注明来源和地址的~专栏 ...
java线程内存模型,线程、工作内存、主内存 -
zdd001:
Spring 线程池使用 -
zdd001:
Spring 线程池使用 -
u014663756:
看了三行就知道是我想要的!!
java线程内存模型,线程、工作内存、主内存
创建型模式中还有一种与工厂方法模式完全不同的模式,就是原型模式。
原型模式(Prototype Pattern)是创建型模式的一种,其特点在于通过“复制”一个已经存在的实例来返回新的实例,而不是新建实例。被复制的实例就是我们所称的“原型”,这个原型是可定制的。
用面向对象的方法来说就是,我们先建立一个原型,然后通过对原型进行复制和修饰的方法,就可以产生一个与原型相似的新对象。即:用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。
在java中复制模型对象是通过clone()方法实现的。其实,这个方法可以是任意名字,比如cloneA(),cloneB()等。不过,一般应该使用clone()方法,这样做有两个原因:一是出于习惯,复制对象当然应该是clone();二是,在许多语言中的基础类中,比如做为所有类基础的Object,都定义了clone()方法。因此,实现原型模式的方法一般应该是原型类继承了Cloneable接口,在具体原型类中需要实现clone()方法,完成对象的自我复制。
程序代码:
- public class Prototype implements Cloneable{
- /**
- /*浅复制
- */
- public Object clone() throws CloneNotSupportedException{
- Prototype prototype = (Prototype)super.clone();
- return prototype;
- }
- }
调用Prototype模式很简单:
Prototype obj = new Prototype();
Prototype obj2 = obj.clone();//复制
从以上的使用可以看出,在java中Prototype模式变成clone()方法的使用,此方法执行的是该对象的“浅复制”,而不是“深复制”操作。
复制分为两种:浅复制和深复制
●浅复制:将一个对象复制之后,生成一个新的对象,新对象的所有成员变量(基本类型和引用类型)都含有与原来对象相同的值,如果原有对象的成员变量是基本数据类型,就会将这个变量的值复制一份到新对象里面,如果原有对象的成员变量是引用数据类型,那么这个引用指向的对象不会新生成一份,而是,在新对象里面的这个引用与原有对象的引用指向的是同一个对象。
●深复制:将一个对象复制之后,生成一个新的对象,新对象的基本数据变量含有与原有对象相同的值,如果原有对象的成员变量是引用数据类型,在新对象里面,这些引用变量将指向被复制过的新对象,而不再是指向原有的那些被引用的对象,深复制把要复制的对象所引用的对象都复制一遍。
用原型实例制定创建对象的种类,并且通过拷贝这些原型创建新的对象。
【原型模式UML图】
【原型模式-JAVA代码实现】
新建赛车的接口:
package car_interface; public interface car_interface { public void start(); public void stop(); } |
新建奥迪汽车的实现类:
package car_imple; 在奥迪汽车实现类中需要注意的是将原来protected类型的clone方法要变成public,这样才可以对外公开,可以被调用,将秘密公开化。 新建奥迪汽车的配件轮胎类
新建客户端运行类:
程序运行结果如下:
从打印的结果来看,我的汽车我的轮胎和其它人的汽车和轮胎都是不一样的对象,但“类型”都是一样的:奥迪的汽车,原版的轮胎。本例中也实现了“原型模式”中的“深拷贝/深复制”,即汽车类中有一个对象“轮胎”对象,关于深拷贝/深复制的概念请参考其它的资料。原型模式通常都是在复制对象的时候使用,而在常规的情况下都是使用new重新创建一个,并且重新对属性进行复制,代码重复度很高,原型模式的出现避免了new的硬操作。 |
发表评论
-
模板模式
2012-11-27 01:14 1085我们在看spring中有部分说到持久层,其中有个类Jdb ... -
访问者模式
2012-11-22 02:59 880访问者模式,顾名思义使用了这个模式后就可以在不修改 ... -
门面模式
2012-11-20 01:06 847外部与一个子系统的通信必须通过一个统一的门面(Facade)对 ... -
追MM与设计模式
2012-11-13 16:40 833创建型模式 1、FACT ... -
命令模式
2012-11-04 23:50 8001.概念 其实命令模式像很多设计模式一样——通过在你的请 ... -
职责链模式
2012-10-24 16:13 986职责链模式:使多个对象都有机会处理请求,从而避免请求的发 ... -
享元模式
2012-10-24 15:06 832享元模式是对象的结构模式。享元模式以共享的方式高效地支持大量的 ... -
桥梁模式
2012-10-23 08:51 1202桥梁模式的用意是把抽象化与实现化脱耦。脱耦是说把抽象和实 ... -
组合模式
2012-10-23 10:07 971组合模式将对象以树形结构组织起来,以达成“部分-整体”的层次结 ... -
适配器模式
2012-10-23 10:46 858把一个类的接口变换成 ... -
外观模式
2012-10-24 11:24 1024比如在玩“极品飞车”这款游戏,你只需要等待的就是倒计时 ... -
代理模式和动态代理
2012-10-24 11:24 989所谓代理,是指具有与代理元(被代理的对象)具有相同的接口的类, ... -
策略模式
2012-10-22 11:00 1061一.策略模式是对象的行为模式,用意是对一组算法的封装。动 ... -
装饰模式
2012-10-22 10:51 916装饰模式:给一个类添加一些额外的职责,并且在添加这些额外 ... -
java设计模式笔记(菜鸟篇)
2012-10-22 10:36 1173设计模式的分类:分布式编程模式,用户界面模式,数据模型模式三大 ... -
java 建造者模式
2012-10-22 10:19 1001java 建造者模式 建造模式的角色:1: ... -
单例模式
2012-10-22 09:56 967public class SingleTon(){ ... -
工厂方法模式与抽象工厂模式
2012-10-17 16:23 1045总结: 简单工厂模式: public inter ... -
观察者模式
2012-08-31 00:42 1052简单地说,观察者模式定义了一个一对多的依赖关系,让一个或多个观 ... -
简单工厂模式与工厂方法模式
2012-08-30 23:49 15031:简单工厂模式 UML图: ...
相关推荐
原型模式(Prototype Pattern)是其中一种行为设计模式,主要用于对象创建。它通过复制已有对象来创建新对象,而不是通过传统的构造函数来创建。在Java中,原型模式可以有效地提高性能,特别是在创建复杂对象时。 #...
原型模式是一种设计模式,主要应用于软件工程领域,用于创建重复的对象,而无需再次进行实例化。在Java、C#等面向对象的语言中,原型模式通过实现`Cloneable`接口或使用序列化机制来实现对象的复制。在这个"原型模式...
**原型模式** 原型模式是一种创建型设计模式,它允许我们创建对象的克隆,而无需知道具体的实现细节。在软件工程中,当我们需要创建多个相似的对象时,使用原型模式可以大大提高效率,避免了每次都去创建新的对象。...
本文将深入探讨一种常见的设计模式——原型模式(Prototype Pattern),并结合具体的iOS应用场景进行解析。 原型模式是一种创建型设计模式,它的主要思想是通过复制已有对象来创建新对象,而不是通过构造函数来创建...
原型模式(Prototype Pattern)是一种创建型设计模式,它允许我们通过复制现有的对象来创建新对象,而无需知道具体创建过程的细节。这种模式的核心在于,它提供了一种对象克隆的简便方法,使得对象的创建过程对用户...
原型模式(Prototype Pattern)是软件设计模式中的一种结构型模式,它的主要目的是通过复制已有对象来创建新对象,从而减少创建新对象的成本。在原型模式中,类的实例化过程被替换为对已有实例的克隆操作,尤其适用...
原型模式是设计模式中的一种,它是Java 23种经典设计模式之一,主要用来提高对象创建的效率。在原型模式中,我们通过复制或克隆一个已经存在的对象来创建新的对象,而不是通过构造函数来创建。这种方法尤其适用于当...
在这个实验六:“原型模式.rar”中,我们将深入理解并实践如何在Java中实现原型模式。 首先,原型模式的核心思想是通过拷贝已有对象来创建新对象,而不是从零开始创建。这种模式在处理复杂对象或者需要大量初始化...
**原型模式(Prototype Pattern)详解** 在软件设计中,原型模式是一种创建型设计模式,它提供了一种通过复制已有对象来创建新对象的方式,避免了重复的构造过程,提高了代码的效率和可维护性。原型模式的核心思想...
本篇文章将深入探讨“原型模式(Prototype)”这一经典的设计模式,它是面向对象设计的一个重要概念,尤其在C++编程中有着广泛的应用。 原型模式是一种创建型设计模式,它的核心思想是通过复制已有对象来创建新对象,...
原型模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在原型模式中,一个对象可以被克隆以创建新对象,而无需知道具体的创建细节。这种模式在需要重复创建相似对象时非常有用,避免了每次创建新对象时都...
**原型模式(Prototype)** 原型模式是一种创建型设计模式,它提供了一种通过复制已有对象来创建新对象的方式,而不是通过传统的构造函数。这种模式在系统中需要创建大量相似对象时特别有用,可以提高效率并减少内存...
原型模式(Prototype)是一种软件设计模式,主要用于简化创建对象的过程,尤其当对象的构造过程复杂时。在C#中,我们可以利用接口或者继承来实现这一模式。本案例将深入探讨如何在C#环境中运用原型模式。 首先,...
原型模式 用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象 从一个对象再创建另外一个可定制的对象,而且不需知道任何创建的细节 克隆的优点 一般在初始信息不发生变化的情况下,克隆是最好的...
JavaScript中的原型模式是一种实现面向对象编程(OOP)的关键机制,它基于原型继承,使得对象可以从其他对象那里获得属性和方法。在这个模式下,每个函数都有一个`prototype`属性,这个属性是一个对象,用于共享属性...
### Java设计模式之原型模式深度解析 #### 模式动机 在面向对象编程的世界里,对象的创建往往伴随着复杂的逻辑处理。特别是在某些场景下,对象的构造过程可能涉及大量资源的消耗,例如数据库连接、文件读写等。在...
**原型模式(Prototype Pattern)**是一种创建型设计模式,它允许我们通过复制现有的对象来创建新对象,而不是通过构造函数或工厂方法。这种模式的核心在于,它提供了一种更高效、更灵活的方式来创建新实例,特别是在...
下面我们将深入探讨原型模式、浅复制和深复制的概念及其在C++中的应用。 ### 原型模式 原型模式的基本思想是通过对象的克隆(clone)方法创建新对象。在C++中,我们可以自定义`clone()`方法来返回对象的一个副本。...
java设计模式【之】原型模式、深拷贝与浅拷贝【源码】【场景:克隆羊】 * 原型模式(Prototype) * 实现方式: * 需要被克隆的 class类, 重写Object中的clone()方法,并实现Cloneable接口(否则报错 ...