文档章节

原型模式

Zhang_H
 Zhang_H
发布于 2014/05/04 22:13
字数 299
阅读 133
收藏 8

原型模式(Prototype Pattren

定义:

Sepcify the kinds ofobject to create using a prototypical instancand create new objects by copying this prototype.

用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

 

通俗理解:原型模式就是克隆一个已有的对象

 

通用类图

通用代码:

package PrototypePattern;

public class PrototypeClass implements Cloneable{
	
	@Override
	protected PrototypeClass clone(){
		
		PrototypeClass prototypeClass = null;
		
		try {
			prototypeClass = (PrototypeClass)super.clone();
		} catch (CloneNotSupportedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return prototypeClass;
	}
}

客户端:

package PrototypePattern;

public class Client {
	public static void main(String[] args) {
		PrototypeClass obj1 = new PrototypeClass();
		PrototypeClass obj2 = obj1.clone();
		
		System.out.println(obj1);
		System.out.println(obj2);
	}
}

原型模式的优点:

  1. 性能优良:是内存二进制流的拷贝,比直接new一个对象性能好很多

  2. 避免构造函数的约束

原型模式的使用场景:

  1. 资源优化场景:

  2. 性能和安全要求的场景

  3. 一个基本对象多个修改者的场景

原型模式的注意事项:

  1. 构造函数不会被执行

  2. 浅拷贝和深拷贝

  3. clonefinal的冲突


参考资料:

    机械工业出版社     《设计模式之禅》        秦小波著

© 著作权归作者所有

Zhang_H
粉丝 6
博文 39
码字总数 21186
作品 0
西安
私信 提问
JavaScript高级程序设计02

面向对象 重点:原型 创建对象 Javascript中没有类的概念,对象是属性的集合,可以想象成成散列表。 对象实例 创建object实例,为它添加方法 对象字面量 其实就是创建object实例的简写形式 ...

白发道长
2018/01/02
0
0
【设计模式】原型模式 Pototype Parttern

前面讲了创建一个对象实例的方法单例模式Singleton Parttern, 创造多个产品的工厂模式(简单工厂模式 Simple Factory Pattern, 工厂方法模式 FactoryMothed Parttern,抽象工厂模式 Abstra...

风之源
2018/08/06
0
0
java23种设计模式十四(连载)

十四、原型模式 原型模式属于对象的创建模式,它要求对象可以“克隆”自身,从而可以复制本身的对象来创建一个实例。通过原型创建的对象,不需要关心这个实例本身,只要实现了克隆方法,就可...

lynnlovemin
2017/08/31
0
0
【JS系列】一起理解对象的7种创建方式(全)

前言 起初接触JS时常见的简单地创建单个对象的方式有下面三种: 字面量,即var obj = {} new Object() Object.create() 以上三种方式在需要创建很多对象时会产生大量重复代码。显然需要更高效...

一灯
04/25
0
0
炒冷饭系列:设计模式 原型模式

炒冷饭系列:设计模式 原型模式 摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 希望转载,保留摘要,谢谢! 亲爱我,孝何难;亲恶我,孝方贤。 一、什么是原型模式 Prot...

泥沙砖瓦浆木匠
2014/07/28
95
0

没有更多内容

加载失败,请刷新页面

加载更多

哪些情况下适合使用云服务器?

我们一直在说云服务器价格适中,具备弹性扩展机制,适合部署中小规模的网站或应用。那么云服务器到底适用于哪些情况呢?如果您需要经常原始计算能力,那么使用独立服务器就能满足需求,因为他...

云漫网络Ruan
今天
10
0
Java 中的 String 有没有长度限制

转载: https://juejin.im/post/5d53653f5188257315539f9a String是Java中很重要的一个数据类型,除了基本数据类型以外,String是被使用的最广泛的了,但是,关于String,其实还是有很多东西...

低至一折起
今天
23
0
OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
11
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
9
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部