《设计模式之禅》-原型模式
原型模式属于比较简单的设计模式,所以使用次数也非常的多
定义:
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象
原型模式的通用代码:
public class PrototypeClass implements Cloneable {@Overridepublic PrototypeClass clone(){PrototypeClass prototypeClass = null;try{prototypeClass = (PrototypeClass)super.clone();} catch (CloneNotSupportedException e) {e.printStackTrace();System.out.println("克隆失败");}return prototypeClass;}
}
通过实现Cloneable接口用来标示这个对象是可拷贝的,Cloneable只是用来告诉JVM这个对象是可以拷贝的,因为在Cloneable中是没有方法的,真正实现拷贝的是覆盖clone()方法,覆盖的是object中的clone方法。
优点:
性能优良:
原型模式是在内存二进制流的拷贝,要比直接new一个对象性能要好得多,特别是要在一个循环体内产生大量的对象时,原型模式可以更好地体现其优势
避免构造函数的约束:
这个既是优点也是缺点,因为是直接在内存中拷贝,构造函数是不会执行的,优点是减少约束,缺点也是减少约束,这个要在实际应用时考虑使用
使用场景
资源优化场景
类的初始化需要消耗非常多的资源,这个资源包括数据,硬件资源等
性能和安全要求的场景
通过new产生一个对象需要非常繁琐的数据准备或访问权限时
一个对象多个修改者
一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,可以考虑用原型模式拷贝多个对象供调用者使用
在实际项目中,原型模式一般搭配工厂模式使用,由原型模式clone创建一个对象,然后再由工厂模式提供给调用者
《设计模式之禅》-原型模式相关推荐
- Java描述设计模式(05):原型模式
一.原型模式简介 1.基础概念 原型模式属于对象的创建模式.通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象. 2.模式结构 原型模式要求对象实现一个 ...
- 设计模式学习笔记-原型模式
一.概述 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象: 二.模式中的角色 Prototype:声明一个克隆自身的接口: ConcretePrototype:实现一个克隆自身的操作: ...
- 【设计模式 06】原型模式(克隆??)
原型模式(clone?) Prototype pattern refers to creating duplicate object while keeping performance in mind ...
- java 设计模式 优缺点_java设计模式2:原型模式(机制\优缺点分析\使用场景)...
1. 原型模式实现机制 原型模式在设计模式中相对比较简单,它直接通过实现 Cloneable接口,再重写 clone()方法返回想要的对象就OK 了. 一起来看下代码 : public class P ...
- Java设计模式5:原型模式
原型模式 原型模式属于对象的创建模式,通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象,这就是原型模式的用意. 原型模式结构 原型模式要求对象实现一个 ...
- 设计模式之【原型模式】,深入理解深拷贝与浅拷贝
文章目录 一.什么是原型模式 二.原型模式实现方式 1.传统方式 2.原型模式 熟悉浅拷贝和深拷贝 浅拷贝实现对象克隆 深拷贝实现对象克隆 一.什么是原型模式 原型模式: 用一个已经创建的实例作为原型 ...
- 【设计模式自习室】原型模式
前言 <设计模式自习室>系列,顾名思义,本系列文章带你温习常见的设计模式.主要内容有: 该设计模式的详细介绍,包括: 引子,意图(大白话解释) 类图,时序图(理论规范) 该模式的代码示例: ...
- java设计模式之五(原型模式)
什么是原型模式? 原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 当我们程序中有几个相似但又不 ...
- 设计模式 之美 -- 原型模式
文章目录 1. 解决问题 2. 应用场景 3. 实现方式 C++实现 C语言实现 4. 缺点 5. 和其他三种创建模式的对比(单例,工厂,建造者) 1. 解决问题 如果对象的创建成本较大,而同一个类的 ...
- 设计模式入门之原型模式Prototype
//原型模式:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象 //简单来说,当进行面向接口编程时,假设须要复制这一接口对象时.因为不知道他的详细类型并且不能实例化一个接口 //这时就须要 ...
最新文章
- 如何修改Sql2005注册服务器名称 {转载}
- 范例ppt_消防安全知识主题班会PPT,全内容高质量课件,完整框架精美套用
- Oracle ASM 翻译系列第十一弹:高级知识 Offline or drop?
- HTML5拖放API(代码展示)
- ambari安装的各组件的目录
- Nginx做反向代理和负载均衡时“X-Forwarded-For”信息头的处理
- python用什么来写模块-用cython来写python的c模块
- NHibernate 基础教程
- idea git将多余的代码提交到本地,如何退回。
- python怎么利用gpu加速_python怎么利用gpu加速
- MT2601智能穿戴芯片处理器参数介绍
- 简单学习一下ibd数据文件解析
- java大作业私人管家系统_微软蓝天云平台:中小企业的私人管家
- 直接耦合的互补输出级
- Android耗电原理及飞书耗电治理
- linux rar和zip工具
- 从事Web前端的工作,日常工作内容有哪些?
- 美团 Robust 热更异常 haven‘t insert code by Robust.Cannot patch this method, method.signature
- 单细胞转录组学应用:骨髓微环境
- 车联网(智能车机)测试行业解决方案