ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

设计模式之“原型模式(ProtoType)”

2022-07-28 12:05:18  阅读:169  来源: 互联网

标签:ProtoType 对象 创建 模式 实例 原型 拷贝 设计模式


一、原型模式(ProtoType)

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

白话解释:用于创建重复的对象,同时有能保证性能(这种类型的设计模式属于创建型设计模式,他提供了一种创建对象的最佳方式)

主要解决:在运行期间建立和删除原型

使用场景:

  1. 当一个系统应该独立于他的产品创建,构成和表达时
  2. 当要实例化的类是在运行时时刻指定时,例如,通过动态装载
  3. 为了避免创建一个与产品类层次平行的工厂类层次时
  4. 当一个类的实例只能有几个不同状态组合中的一种时
  5. 建立相对应数目的原型并克隆他们可能比每次合适的状态手工实例化该类更方便一些
  6. 资源优化场景
  7. 类初始化需要消耗非常多的资源,这个资源包括数据、硬件资源等
  8. 性能和安全要求的场景
  9. 通过new产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式
  10. 一个对象多个修改者的场景
  11. 一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,可以考虑使用原型模式已经与Java融为浑然一体,大家可以随手拿来使用

如何解决:利用已有的一个原型对象,快速地生成和原型对象一样的实例

关键代码:

  1. 实现克隆操作,在Java中继承Cloneable,重写clone,在C语言中可以使用Object类的MemberWiseClone()方法来实现对象的浅拷贝或通过序列化的方式来实现深拷贝
  2. 原型模式同样用于隔离类对象的使用者和具体类型(易变类)之间的耦合关系,他同样要求这些“易变类”拥有稳定的接口

应用实例:

  1. 细胞分裂
  2. Java中的Object clone();方法

优点

  1. 性能提高
  2. 逃避构造函数的约束

缺点:

  1. 配备克隆方法需要对类的功能进行通盘考虑,这对于全新的类不是很难,但对于已有的类不一定是容易的,特别当一个类引用不支持串行化的间接对象,或者引用含有循环结构的时候
  2. 必须实现Cloneable接口

注意事项

  1. 与通过对一个类进行实例化来构造新对象不同的是原型模式是通过拷贝一个现有对象生成新对象的
  2. 浅拷贝实现Cloneable,重写
  3. 深拷贝是通过实现Serializable读取二进制流
  4. 有点赋值的意思

 

二、原型模式结构图

 

 原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节。

 

标签:ProtoType,对象,创建,模式,实例,原型,拷贝,设计模式
来源: https://www.cnblogs.com/saoge/p/16528124.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有