原型模式属于比较简单的设计模式,所以使用次数也非常的多

定义:

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

原型模式的通用代码:

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创建一个对象,然后再由工厂模式提供给调用者

《设计模式之禅》-原型模式相关推荐

  1. Java描述设计模式(05):原型模式

    一.原型模式简介 1.基础概念 原型模式属于对象的创建模式.通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象. 2.模式结构 原型模式要求对象实现一个 ...

  2. 设计模式学习笔记-原型模式

    一.概述 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象: 二.模式中的角色 Prototype:声明一个克隆自身的接口: ConcretePrototype:实现一个克隆自身的操作: ...

  3. 【设计模式 06】原型模式(克隆??)

    原型模式(clone?) Prototype pattern refers to creating duplicate object while keeping performance in mind ...

  4. java 设计模式 优缺点_java设计模式2:原型模式(机制\优缺点分析\使用场景)...

    1. 原型模式实现机制 原型模式在设计模式中相对比较简单,它直接通过实现 Cloneable接口,再重写 clone()方法返回想要的对象就OK 了. 一起来看下代码 : public class P ...

  5. Java设计模式5:原型模式

    原型模式 原型模式属于对象的创建模式,通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象,这就是原型模式的用意. 原型模式结构 原型模式要求对象实现一个 ...

  6. 设计模式之【原型模式】,深入理解深拷贝与浅拷贝

    文章目录 一.什么是原型模式 二.原型模式实现方式 1.传统方式 2.原型模式 熟悉浅拷贝和深拷贝 浅拷贝实现对象克隆 深拷贝实现对象克隆 一.什么是原型模式 原型模式: 用一个已经创建的实例作为原型 ...

  7. 【设计模式自习室】原型模式

    前言 <设计模式自习室>系列,顾名思义,本系列文章带你温习常见的设计模式.主要内容有: 该设计模式的详细介绍,包括: 引子,意图(大白话解释) 类图,时序图(理论规范) 该模式的代码示例: ...

  8. java设计模式之五(原型模式)

    什么是原型模式? 原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 当我们程序中有几个相似但又不 ...

  9. 设计模式 之美 -- 原型模式

    文章目录 1. 解决问题 2. 应用场景 3. 实现方式 C++实现 C语言实现 4. 缺点 5. 和其他三种创建模式的对比(单例,工厂,建造者) 1. 解决问题 如果对象的创建成本较大,而同一个类的 ...

  10. 设计模式入门之原型模式Prototype

    //原型模式:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象 //简单来说,当进行面向接口编程时,假设须要复制这一接口对象时.因为不知道他的详细类型并且不能实例化一个接口 //这时就须要 ...

最新文章

  1. 如何修改Sql2005注册服务器名称 {转载}
  2. 范例ppt_消防安全知识主题班会PPT,全内容高质量课件,完整框架精美套用
  3. Oracle ASM 翻译系列第十一弹:高级知识 Offline or drop?
  4. HTML5拖放API(代码展示)
  5. ambari安装的各组件的目录
  6. Nginx做反向代理和负载均衡时“X-Forwarded-For”信息头的处理
  7. python用什么来写模块-用cython来写python的c模块
  8. NHibernate 基础教程
  9. idea git将多余的代码提交到本地,如何退回。
  10. python怎么利用gpu加速_python怎么利用gpu加速
  11. MT2601智能穿戴芯片处理器参数介绍
  12. 简单学习一下ibd数据文件解析
  13. java大作业私人管家系统_微软蓝天云平台:中小企业的私人管家
  14. 直接耦合的互补输出级
  15. Android耗电原理及飞书耗电治理
  16. linux rar和zip工具
  17. 从事Web前端的工作,日常工作内容有哪些?
  18. 美团 Robust 热更异常 haven‘t insert code by Robust.Cannot patch this method, method.signature
  19. 单细胞转录组学应用:骨髓微环境
  20. 车联网(智能车机)测试行业解决方案

热门文章

  1. 别费劲找站长工具共享VIP了 这个工具也不错
  2. EndnoteX9简介及基本教程使用说明
  3. 银行信用卡客户价值分析(Python数据分析)
  4. 学习SEO有别的味道
  5. CSS浮动-5.1浮动比较重要-使用folat属性来设置元素的浮动-left-right-none
  6. 如何保障微服务架构下的数据一致性
  7. android_54a3,碉堡了,连神画Y1投影仪都可以跑android大型游戏N.0.V.A3
  8. pytoch 安装为Gpu版本
  9. 现流行的九大前端框架
  10. 用cmd 改电脑ip