`
TRAMP_ZZY
  • 浏览: 141283 次
社区版块
存档分类
最新评论

设计模式-原型模式

    博客分类:
  • Java
阅读更多
Specify the kinds of objects to create using a prototypcal instance, and create new 
	objects by copying this prototype.
	用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
	
	原型模式的核心是一个clone 方法,通过该方法进行对象的拷贝,Java提供一个Cloneable 接口
	来标示这个对象是可以拷贝的。
	
	public class PrototypeClass implements Cloneable {
	
		@Override
		public PrototypeClass clone() {
			PrototypeClass prototypeClass = null;
			try {
				
				prototypeClass = (PrototypeClass) super.clone();
				
			} catch (CloneNotSupportedException e) {
				e.printStackTrace();
			}
			
			return prototypeClass;
		}

	}

	原型模式的优点
	(1)性能优良 原型模式是内存二进制的拷贝,要比直接new 一个对象性能好很多,特别是要在
		一个循环体内产生大量的对象时,原型模式可以更好地体现其优点。
	(2)逃避构造函数的约束
	
	原型模式的使用场景
	(1)资源优化场景 类初始化需要消耗非常多的资源。
	(2)性能和安全要求的场景 通过new 产生一个对象需要非常繁琐的数据准备或访问权限,则可
		以使用。
	(3)一个对象多个修改者的场景 一个对象需要提供给其他对象访问,而且各个调用者可能都需
		要修改其值时。
		
	原型模式的注意事项
	(1)构造函数不会执行
	(2)浅拷贝和深拷贝
		Object 类提供的方法clone 只是拷贝本对象,其对象内部的数组、引用对象都不拷贝,还是
		指向原对象的内部元素地址,这种拷贝就叫做浅拷贝。(String 类型的Java 希望把其当作
		基本类型使用,它是没有clone 方法的。)
	
	深拷贝和浅拷贝建议不要混合使用,特别是在设计类的继承的时,父类引用多个变量就非常复杂。
	建议的方法是深拷贝和浅拷贝分开实现。
	
	要使用clone 方法,类的成员变量上不要增减final 关键字。
分享到:
评论

相关推荐

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

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

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

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

    java设计模式-原型模式

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段...

    JAVA-设计模式-创建型模式-原型模式

    JAVA-设计模式-创建型模式-原型模式

    C++设计模式-原型模式

    原型模式(Prototype Pattern)是软件设计模式中的一种创建型模式,它提供了一种复制已有对象而不必知道其具体类别的方法。在C++中,原型模式常常利用拷贝构造函数或赋值运算符来实现对象的克隆。这种模式在需要频繁...

    24设计模式-原型模式1

    原型模式是一种设计模式,主要目的是通过复制现有对象来创建新对象,从而简化创建过程并减少对象构造的开销。在Java中,实现原型模式通常涉及`Cloneable`接口和`clone()`方法。`Cloneable`接口是一个标记接口,类...

    iOS设计模式-原型设计模式

    在iOS应用开发中,设计模式是一种经过验证的解决常见编程问题的方法,它们是经验的结晶,可以帮助开发者写出可维护、可扩展的代码。本文将详细探讨"原型设计模式"(Prototype Design Pattern)及其在iOS中的应用。 ...

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

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

    c++20设计模式-第4章-原型模式代码

    原型模式(Prototype Pattern)是其中一种行为设计模式,它允许我们通过复制现有对象来创建新对象,而不是通过传统方式实例化新对象。这一模式尤其适用于创建复杂或昂贵的对象,因为它提供了对象克隆的能力,从而...

    设计模式-Java语言中的应用

    设计模式通常分为三类:创建型模式(如工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式),结构型模式(如适配器模式、装饰器模式、代理模式、桥接模式、组合模式、外观模式、享元模式)以及行为型模式(如...

    java设计模式---诙谐易懂版

    根据给定文件内容,以下是关于Java设计模式的知识点说明: 1. 策略模式(Strategy Pattern)是一种行为设计模式,允许在运行时选择算法的行为。策略模式的意图是定义一系列算法,将每个算法封装起来,并使它们可以...

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

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

    Java设计模式----通俗易懂版

    这个资源"Java设计模式----通俗易懂版"显然是一个专门针对初学者或需要深入理解设计模式的开发者编写的指南。作者以形象生动的例子解释了23种经典的Java设计模式,使得复杂的概念变得更加易于理解。 首先,我们要...

    软件设计模式--填空题+简答题(复习7).rar

    2. **设计模式分类**:设计模式通常分为三类:创建型模式(如工厂方法、抽象工厂、单例、建造者、原型)、结构型模式(如适配器、桥接、装饰、组合、代理、外观、享元)和行为型模式(如责任链、命令、解释器、迭代...

    C# 设计模式系列教程-原型模式

    原型模式是一种设计模式,它允许我们通过复制现有对象来创建新对象,而不是从零开始构造它们。这种模式尤其适用于那些初始化过程复杂、耗时较长的对象,因为它能显著提高性能。 在C#中,原型模式通常通过实现`...

    设计模式之原型模式

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

    JAVA设计模式-chm版

    这个“JAVA设计模式-chm版”资源显然包含了关于Java设计模式的详细信息,便于理解和应用。设计模式是对常见问题的解决方案的标准化描述,它们在软件工程中起到了重要的作用,帮助开发者创建可维护、可扩展且易于理解...

    设计模式-C++

    创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:...

    设计模式课件大全

    设计模式05-建造者、原型模式 设计模式06-适配器、桥接、组合模式 设计模式07-组合模式、装饰模式 设计模式09-外观模式、享元模式 设计模式10-代理模式、结构型模式大复习 设计模式11-行为模式-责任链、命令模式 ...

Global site tag (gtag.js) - Google Analytics