设计模式(四)原型模式(Prototype)-创建型

原型模式Prototype

原型模式也是创建模式的一种,顾名思义,就是创建一个和原来一模一样的新对象。比如日常开发中,常用到的复制的功能,用户新建一个财务凭证后,以后会有类似的凭证,只是金额需要修改,其它内容都相同。此时用户就没有必要重新将凭证的内容一个一个地输入到界面上,只需要执行复制功能,即可生成一张新的一模一样的凭证,然后新的凭证上只修改金额即可,这时就使用原型模式。

说明:Java对象赋值是地址传值,修改赋值后的实例会修改原来实例的属性值;我们需要的是复制后修改但不修改原来的实例的属性值。

原型模式示意图

方法:实现Java中的Cloneable类

implements Cloneable

public Object clone(){
	Object obj = null;
	try{
		obj = super.clone();
	} catch(CloneNotSupportException ex){
		System.out.println(ex);
	}
	return ojb;
}

客户端调用:

Product p = new Product();
p.setNum(111);
p.setPrice(14);
p.setRebate(20);
Product p1 = (Product) p.clone();
p1.setNum(200);

我们得到的是,修改后的p1和p的数量不同。

时间: 2024-09-29 21:04:01

设计模式(四)原型模式(Prototype)-创建型的相关文章

设计模式-05 原型模式(创建型模式)

一 原型模式 原型模式是用于创建重复的对象,同时又能保证性能. 原型模式用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象. 主要解决: 利用已有的一个原型对象,快速地生成和原型对象一样的实例 关键代码 : 实现克隆操作,在 JAVA 继承 Cloneable,重写 clone() 使用场景: 类初始化需要消化非常多的资源,这个资源包括数据.硬件资源等. 类图: 原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype.Prototype类需要具备以下两个条件: 实现

Java设计模式四: 原型模式(Prototype Pattern)

网上找了好多这个模型的资料说的都不透彻,看了半天都是云里雾里.只好自己操刀研究一把. 原型模式是一种创建型设计模式,它通过复制一个已经存在的实例来返回新的实例,而不是新建实例.被复制的实例就是我们所称的原型,这个原型是可定制的.原型模式多用于创建复杂的或者耗时的实例, 因为这种情况下,复制一个已经存在的实例可以使程序运行更高效,或者创建值相等,只是命名不一样的同类数据. 原型模式中的拷贝分为"浅拷贝"和"深拷贝":浅拷贝: 对值类型的成员变量进行值的复制,对引用类型

设计模式-04 建造者模式(创建型模式)

一 建造者模式 建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 主要解决:在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成:由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定. 关键代码 : 建造者:创建和提供实例,导演:管理建造出来的实例的依赖关系. 使用场景: 汽车有很多部件,车轮

设计模式05: Prototype 原型模式(创建型模式)

Prototype 原型模式(创建型模式) 依赖关系的倒置抽象不应该依赖于实现细节,细节应该依赖于抽象.对所有的设计模式都是这样的. -抽象A直接依赖于实现细节b -抽象A依赖于抽象B,实现细节b依赖于抽象B 动机(Motivation) 在软件工程中,经常面临着“某些结构复杂的对象”的创建工作:由于需求变化,这些对象经常面临着剧烈的变化,但是它们却拥有比较稳定一致的接口. 如何应对这种变化?如何向“客户程序(使用这些对象的程序)”隔离出这些“易变对象”,从而使得“依赖这些易变对象的客户程序”不

二十四种设计模式:原型模式(Prototype Pattern)

原型模式(Prototype Pattern) 介绍用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象. 示例有一个Message实体类,现在要克隆它. MessageModel using System; using System.Collections.Generic; using System.Text; namespace Pattern.Prototype { /// <summary> /// Message实体类 /// </summary> publi

创建型设计模式之原型模式(Prototype)

结构   意图 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 适用性 当要实例化的类是在运行时刻指定时,例如,通过动态装载:或者 为了避免创建一个与产品类层次平行的工厂类层次时:或者 当一个类的实例只能有几个不同状态组合中的一种时.建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便一些. 1 using System; 2 3 // Objects which are to work as prototypes must be based on class

设计模式(四)原型模式(创建型)

定义:通过拷贝一个已经存在的实例来返回新的实例,而不是新建实例.被拷贝的实例就称为原型. 类图 原型类实现思路 (1)实现Cloneable接口.(在Java虚拟机中,只有实现了这个接口的类才可以被拷贝.) (2)重写Object类中的clone方法.(作用是返回对象的一个拷贝,但其作用域是protected,要修改成public.) 原型模式中的拷贝分为“浅拷贝”和“深拷贝”. 浅拷贝 对值类型的成员变量进行值的复制,对引用类型的成员变量只复制引用.不复制引用的对象. 深拷贝 对值类型的成员变

设计模式--原型模式(创建型)

一.原型模式 用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象.原型模式实现的关键就是实现Clone函数,还需要实现深拷贝. 二.UML类图 三.例子 //父类 class Resume { protected: char *name; public: Resume() {} virtual ~Resume() {} virtual Resume* Clone() { return NULL; } virtual void Set(char *n) {} virtual void S

设计模式 笔记 原型模式 prototype

//---------------------------15/04/07---------------------------- //prototype 原型模式--对象创建型模式 /* 1:意图:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 2:动机: 3:适用性: 1>当一个系统应该独立于它的产品创建.构成和表示时 2>当要实例化的类是在运行时刻制定时,例如通过动态装载 3>为了避免创建一个与产品类层次平行的工厂类层次时 4>当一个类的实例只能有几个不同状

【设计模式】—— 原型模式Prototype

前言:[模式总览]——————————by xingoo 模式意图 由于有些时候,需要在运行时指定对象时哪个类的实例,此时用工厂模式就有些力不从心了.通过原型模式就可以通过拷贝函数clone一个原有的对象,给现在的对象使用,从而创建更多的同类型的对象. 模式结构 [简单原型模式]用于原型的版本不多的时候 [登记模式的原型模式]如果原型的实现很多种版本,那么通过一个登记管理类,可以方便的实现原型的管理. Prototype 原型接口,定义原型的结构. ConcretePrototype 原型的具体