1、 原型模式实现机制

原型模式在设计模式中相对比较简单,它直接通过实现 Cloneable接口,再重写 clone()方法返回想要的对象就OK 了。

一起来看下代码 :

public class ProtoType implements Cloneable {

public ProtoType(){

System.out.println("new ");

}

/**

* 重写clone

* @return

* @throws CloneNotSupportedException

*/

@Override

protected Object clone() throws CloneNotSupportedException {

System.out.println("clone");

return (ProtoType)super.clone();

}

//测试 : 依次打印 new clone

public static void main(String[] args) throws CloneNotSupportedException {

//通过new 方式

ProtoType protoType = new ProtoType();

//通过clone方式,注意不走构造函数

ProtoType protoType2 =(ProtoType) protoType.clone();

// false 两个对象是不同引用

System.out.println(protoType ==protoType2);

}

}

可以看到,我们需要多少对象,直接调用clone()克隆即可。

2、优缺点分析

优点: 它是在运行时操作对象,操作的是内存中的二进制流,在创建大对象时,相比 new 一个对象,性能优势明显。

缺点:必须实现Cloneable接口

3、使用场景

希望以一个对象为原型,创建其他近似的对象的时候;

代码优化场景, 业务中用的比较少,一般很少单独使用,会结合工厂方法模式使用;

多个调用者使用时,并且需要修改对象中的值,可以考虑原型模式来提供对象;

ok,很简单吧

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

  1. Java设计模式之创建型:原型模式

    一.什么是原型模式: 原型模式主要用于对象的创建,使用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象.UML类图如下: 原型模式的核心是就是原型类 Prototype,Prototype ...

  2. Android源码设计模式探索与实战【原型模式】

    IT行业,一直讲一句话,拼到最后都拼的是"内功",而内功往往就是指我们处理问题的思路.经验.想法,而对于开发者来说,甚至对于产品也一样,都离不开一个"宝典",就 ...

  3. Java设计模式之(四)——原型模式

    1.什么是原型模式 Specify the kinds of objects to create using a prototypical instance,and create new object ...

  4. 设计模式(三):传统模式VS简单原型模式及其优缺点

    概念 原型模式是一个创建型的模式.用原型实例指定创建对象的种类,并且通过拷贝这些原型,创建新的对象.原型模式多用于创建复杂的或者构造耗时的实例,因为这种情况下,复制一个已经存在的实例可使程序运行更高效 ...

  5. 设计模式总结篇系列:原型模式(Prototype)

    首先对原型模式进行一个简单概念说明:通过一个已经存在的对象,复制出更多的具有与此对象具有相同类型的新的对象. 在理解Java原型模式之前,首先需要理解Java中的一个概念:复制/克隆. 在博文< ...

  6. 设计模式学习笔记九:原型模式(Prototype Pattern)

    1.概述     意图:我们将已经存在的对象作为原型,用户可以通过复制这些原型创建新的对象.     使用场合:当一个系统应该独立于产品的创建.构造和表示时,可以使用原型模式.在原型模式中,产品的创建 ...

  7. java设计模式教程_Java设计模式教程

    java设计模式教程 课程大纲 架构和计算机科学中的设计模式是记录特定专业领域中设计问题的解决方案的正式方法. 这个想法是由建筑师Christopher Alexander在建筑领域引入的,并已被修改 ...

  8. java 设计模式 示例_Java设计模式–示例教程

    java 设计模式 示例 Design Patterns are very popular among software developers. A design pattern is a well- ...

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

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

最新文章

  1. Java jmap查看堆内存
  2. 第一次使用 Blog
  3. 未来的5年内,我为什么不看好“AI+教育”
  4. 自己在项目中写的一个Jquery插件和Jquery tab 功能
  5. jQuery插件(多级菜单)
  6. 30万美元:Zerodium 出3倍价格求 WordPress RCE exploit
  7. Oracle 10g宝典(第2版)
  8. 2.7.PHP7.1 狐教程-【PHP控制语句 if...else】
  9. python爬虫实例
  10. MATLAB去重并排序-unique
  11. python可以做手机脚本吗,如何将Python自动化测试脚本放在手机上运行
  12. MCDC — 修正判定条件覆盖
  13. 昌乐博闻学校2021年高考成绩查询,2021高考难度升级吗?两点忠告送给高考生
  14. 够哦了下攻击力开房间的发的goole
  15. 《Linux操作系统-基础笔记》第6章 编译调试工具(GCC、GDB)
  16. vue练手小项目--眼镜在线试戴
  17. 阿里云实人认证有什么特点
  18. Pytorch使用autograd.Function自定义拓展神经网络
  19. 国仁网络资讯:视频号怎么剪辑制作视频;都有哪些剪辑软件好用。
  20. 自由市场经济、社会主义和大数据

热门文章

  1. LeetCode 98. 验证二叉搜索树(中序遍历)
  2. java 资源锁定_如何在Java中创建时正确锁定资源
  3. 服务器不知别内存_图文版 许迎果第63期 选购和使用内存需要注意的点
  4. dategurd oracle_Oracle 时间和日期处理
  5. python list存储对象_《python解释器源码剖析》第4章--python中的list对象
  6. 专心做搜索也能登顶CLUE分类榜?在快手做搜索是一种怎样的体验
  7. @开发者,第二届马栏山杯国际音视频算法大赛高分攻略请查收,心动大奖等你来战!...
  8. Spring Boot 2.0与Java 9
  9. 论文浅尝 | IRW:基于知识图谱和关系推理的视觉叙事框架
  10. ImportError: libSM.so.6: cannot open shared object file: No such file or dir