1. 什么是原型模式(Prototype Pattern)

在需要创建大量相同或者相似的对象时,先创建一个原型对象,然后利用这个原型对象进行克隆,从而得到大量对象

  • java中可以利用Object中的clone()方法快速实现克隆
  • 克隆分为深克隆和浅克隆
  • 浅克隆:只拷贝对象本身(包括对象中包含的基本类型),而对象中的其他依赖对象则不进行拷贝(Object中的clone()方法便是浅克隆)
  • 深克隆:不仅拷贝对象本身,连同对象中其他的依赖对象一并拷贝

2. 原型模式(Prototype Pattern)的适用场景

  1. 适用于创建大量相同或者相似的对象
  2. 需要在创建的对象群中默认初始化一部分属性

3. 原型模式(Prototype Pattern)的角色组成

原型对象:被克隆的对象原型

4. 代码示例

  1. 原型对象:
package com.lt.patterns.prototype;/*** @author lt* @date 2019年4月15日* @version v1.0*/
public class PrototypeCar implements Cloneable{private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Car [name=" + name + "]";}/*** 将方法范围由protected变成public*/@Overridepublic PrototypeCar clone() throws CloneNotSupportedException {return (PrototypeCar) super.clone();}
}
  1. 客户端
package com.lt.patterns.client;import com.lt.patterns.prototype.PrototypeCar;/*** 原型模式:利用java中的clone()方法进行创建同样的对象* @author lt* @date 2019年4月15日* @version v1.0*/
public class Client {public static void main(String[] args) throws CloneNotSupportedException {PrototypeCar prototype = new PrototypeCar();prototype.setName("BMW");for(int i=0; i<5; i++){PrototypeCar c = prototype.clone();//hashcode不同,即为不同对象System.out.println("hashcode:"+c.hashCode()+",name:"+c.getName());}}
}

5. 原型模式(Prototype Pattern)的特点

  • 优点:
  1. 可以快速创建大量相同或者相似的对象
  • 缺点:

6. 相关疑问

五、原型模式(Prototype Pattern)相关推荐

  1. 乐在其中设计模式(C#) - 原型模式(Prototype Pattern)

    [索引页] [源码下载] 乐在其中设计模式(C#) - 原型模式(Prototype Pattern) 作者:webabcd 介绍 用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象. ...

  2. C++设计模式——原型模式(Prototype Pattern)

    C++设计模式--原型模式(Prototype Pattern) 微信公众号:幼儿园的学霸 目录 文章目录 C++设计模式--原型模式(Prototype Pattern) 目录 定义 代码示例 普通 ...

  3. 原型模式(Prototype Pattern)

    原型模式(Prototype Pattern) 原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. ...

  4. 极速理解设计模式系列:4.原型模式(Prototype Pattern)

    四个角色:抽象原型角色(Prototype).具体原型角色(ConcretePrototype).原型管理器角色(PrototypeManager).客户端角色(Client) 抽象原型角色(Prot ...

  5. 设计模式---原型模式(Prototype Pattern)

    在编程中有时候我们会发现,当我们需要一个实例,可是这个实例的创建过程十分复杂,在执行过程中 会消耗大量的时间,同时创建第一个实例和创建第二个时间的初始化信息并未改变.在此种情况下,直接New 一个实例 ...

  6. 设计模式五: 原型模式(Prototype)

    简介 原型模式是属于创建型模式的一种,是通过拷贝原型对象来创建新的对象. 万能的Java超类Object提供了clone()方法来实现对象的拷贝. 可以在以下场景中使用原型模式: 构造函数创建对象成本 ...

  7. 设计模式(23):创建型-原型模式(Prototype)

    设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于 ...

  8. 原型模式(ProtoType) - Java里的对象复制

    一, 引用的复制和对象复制. 在编程中, 我们有时会用两个引用指向同一个对象. 例如: ArrayList a = new ArrayLIst(); ArrayList b = a; 看起来好像有a, ...

  9. 原型模式-prototype

    一.什么是原型模式 Prototype模式是一种对象创建型模式,它采取复制原型对象的方法来创建对象的实例.使用Prototype模式创建的实例,具有与原型一样的数据. 二.原型模式的特点 1.由原型对 ...

  10. Java设计模式--原型模式Prototype

    原型模式Prototype 原型模式使得用户可以通过复制对象样本来创建新对象.与通过调用构造函数创建对象相比,二者主要区别在于:通过复制创建的新对象一般会包含原始对象的某些状态. 原型模式属于对象的创 ...

最新文章

  1. 行人被遮挡问题怎么破?百度提出PGFA新方法,发布Occluded-DukeMTMC大型数据集 | ICCV 2019...
  2. 进程和程序:编写shell——《Unix/Linux编程实践教程》读书笔记(第8章)
  3. 【控制】《多无人机协同控制技术》周伟老师-第7章-基于多模型预测控制的无人机编队运动控制策略
  4. Hadoop与Spark常用配置参数总结
  5. access开发精要(14)-货币与数字类型格式(2)
  6. wind10MySQL闪退什么密码_win10系统Mysql输入密码后闪退的解决方法
  7. 快准牌电脑发软件_电脑如何下载软件
  8. Java 3desede加解密_JAVA加解密11-对称加密算法-DES以及DESede算法
  9. 编写c语言程序的可视化编程环境有哪些,C语言可视化编程环境设计及实现.pdf
  10. columns列:Rows 工作表上所有的行
  11. mysql词法分析antlr4_sharding-jdbc之ANTLR4 SQL解析
  12. ab flash player 8_八年级上册英语同步练测考和AB卷听力链接(福建版)
  13. 有线与无线网络配置相关工具
  14. 互亿无线短信平台接口java实现
  15. ArcGIS中通过JPG图片文件提取矢量要素
  16. 1957:【12NOIP普及组】质因数分解
  17. 2019年1-4月份雅思口语题库素材(原创)describe an interesting persion you would like to meet
  18. linux服务器新装hba卡,EmulexHBA卡在Linux下的安装方法
  19. 【需求】Python利用selenium抓取顺丰的地址数据
  20. 人力资源系统开发案例

热门文章

  1. 从零开始实现3D软光栅渲染器 (1) 简介
  2. 暗色html模板,暗色个人主页网站模板
  3. 谁来PK“百度局域网”
  4. python科学计算环境配置_ATLAS + NumPy + SciPy + Theano 的Python科学计算环境搭建
  5. Python绘制韦恩图并通过集合找到交集并集数据
  6. esxi 用途和开机自启动设置。
  7. Java SE基础知识详解第[12]期—集合(Set、Collections、Map、集合嵌套)
  8. 计算机视觉 - 图像编码
  9. linux下配置mysql_linux下安装mysql
  10. html中tr中加判断换行符,深入解析HTML的table表格标签与相关的换行问题