原型模式Prototype

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

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

  • 客户(Client)角色:客户类提出创建对象的请求。

  • 抽象原型(Prototype)角色:这是一个抽象角色,通常由一个Java接口或Java抽象类实现。此角色给出所有的具体原型类所需的接口。

  • 具体原型(Concrete Prototype)角色:被复制的对象。此角色需要实现抽象的原型角色所要求的接口。

      原型模式要求对象实现一个可以“克隆”自身的接口,这样就可以通过复制一个实例对象本身来创建一个新的实例。这样一来,通过原型实例创建新的对象,就不再需要关心这个实例本身的类型,只要实现了克隆自身的方法,就可以通过这个方法来获取新的对象,而无须再去通过new来创建。

      原型模式有两种表现形式:(1)简单形式、(2)登记形式,这两种表现形式仅仅是原型模式的不同实现。

参考资料:https://www.cnblogs.com/java-my-life/archive/2012/04/11/2439387.html

代码:


package website.dengta.prototype;public interface Prototype {/*** 克隆自身的方法* @return 一个从自身克隆出来的对象*/public Object clone();
}

package website.dengta.prototype;/*** @author www.dengta.website* @date 2017-11-13 22:51*/
public class ConcretePrototypeB implements Prototype {@Overridepublic Prototype clone() {//最简单的克隆,新建一个自身对象,由于没有属性就不再复制值了Prototype prototype = new ConcretePrototypeB();return prototype;}
}

package website.dengta.prototype;/*** @author www.dengta.website* @date 2017-11-13 22:51*/
public class ConcretePrototypeA implements Prototype {@Overridepublic Prototype clone() {//最简单的克隆,新建一个自身对象,由于没有属性就不再复制值了Prototype prototype = new ConcretePrototypeA();return prototype;}
}

package website.dengta.prototype;/*** @author www.dengta.website* @date 2017-11-13 22:52*/
public class ClientTest {/*** 持有需要使用的原型接口对象*/private Prototype prototype;/*** 构造方法,传入需要使用的原型接口对象*/public ClientTest(Prototype prototype) {this.prototype = prototype;}public static void main(String[] args) {ConcretePrototypeA typeA = new ConcretePrototypeA();System.out.println(typeA.getClass());Prototype fromTypeA = typeA.clone();System.out.println(fromTypeA.getClass());}
}

Java设计模式--原型模式Prototype相关推荐

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

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

  2. Java设计模式-原型模式

    原型模式   在有些系统中,存在大量相同或相似对象的创建问题,如果用传统的构造函数来创建对象,会比较复杂且耗时耗资源,用原型模式生成对象就很高效. 原型模式的定义与特点   原型(Prototype) ...

  3. 7.Java设计模式-----原型模式(Prototype Pattern)

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

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

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

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

    概述 原型模式是为了解决一些不必要的对象创建过程.当Java JDK中提供了Cloneable接口之后,原型模式就变得异常的简单了.虽然由于Cloneable的引入使用程序变得更简单了,不过还是有一些 ...

  6. Java设计模式--原型模式

    1 Prototype Pattern 原型模式 目的:在运行期通过"复制和粘贴"来创建新对象 : 实现:创建一个原型对象,再通过Java 语言中常用的克隆实现方法复制这个原型对象 ...

  7. java设计模式---原型模式

    在阎宏博士的<JAVA与模式>一书中开头是这样描述原型(Prototype)模式的: 原型模式属于对象的创建模式.通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办 ...

  8. 设计模式-原型模式(Prototype)

    Specify the kinds of objects to create using a prototypical instance,and create new objects bycopyin ...

  9. 我的Java设计模式-原型模式

    "不好意思,我是卧底!哇哈哈哈~"额......自从写了上一篇的观察者模式,就一直沉浸在这个角色当中,无法自拨.昨晚在看<使徒行者2>,有一集说到啊炮仗哥印钞票,我去, ...

最新文章

  1. git、github、gitlab、gitee都是什么?
  2. python 安装 HTMLtestRunner(转)
  3. 高德地图轨迹回放_高德地图上线了一个新功能….
  4. ICPR 2022 第一届卫星视频运动目标检测与跟踪挑战赛正式开赛
  5. python开发环境推荐_推荐一款Python开发环境管理神器
  6. java反射面试_总结Java反射面试题(附答案)
  7. 计算MMMM年WW周是YYYY年MM月DD日(周一)到YYYY年MM月DD日(周日)(以JS为例)
  8. 【直播预告】相机模型与标定——Real world超级公开课
  9. 快速成为脚本小子_什么是脚本小子? 如何成为脚本小子?
  10. 微信小程序商城项目实战(第四篇:商品详情页)
  11. android分辨率比例,选择点一:搞清楚分辨率与屏幕比例
  12. 人力资源战略规划新思考
  13. 判断xarray中小于0的位置坐标
  14. Oculus Rift, HTC Vive, SONY PSVR的全面对比
  15. 总有一句能触动你,总有那么一个人在等候你,生死看淡,不服就干
  16. iis高并发 大量数据并发设置
  17. 百度网盘全速下载破解工具
  18. 解决Failed to connect to github.com port 443:Connection refused
  19. Android 时间转换 今天 昨天 前天 的样式
  20. 2021-08-07诺瓦科技面试

热门文章

  1. (读书笔记一)Ruby.new
  2. 网络信息安全等级保护制度
  3. 供应链变革专案的利器–SCORE方法论 (六)
  4. PC端和移动端网页特效,fastclick插件,Swiper插件,Bootstrap等框架,本地存储
  5. 前端程序员入门、进阶必备的5大网站,你知道几个?
  6. 工作毫无价值和意义,很迷茫,该怎么办?
  7. avada functions.php,WooCommerce & Avada 主题: [已解决] 社交分享在产品类别
  8. java代码实现对pdf文件文本和图片内容的提取
  9. 电商、流量平台分析指标
  10. 使用jOrgChart插件, 异步加载生成组织架构图