05 【创建型】原型模式 理解克隆对象~
2019-11-05 23:08
211 查看
原型模式(克隆对象)
用于创建重复的对象,用克隆对象的方式代替new 关键字的使用。
就好比细胞分裂,最开始的一个细胞通过自我复制,分裂成两个。两个分裂成四个,依次指数增长
这里就涉及到一个概念,就是创建重复的对象,就好比细胞分裂的时候就是在重复创建对象,我们可以让对象实现Cloneable接口
通过父类的clone() 方法进行创建相同的对象,这里的相同是指有相同的属性,但是他们在内存中却有不同的引用存在
代码理解
对象实现Cloneable 重写父类的clone方法
public class Student implements Cloneable { private String id; private String name; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Object clone() { Object clone = null; try { clone = super.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } return clone; } }
//测试 分别用new的方式与clone的方式 创建100个相同的对象需要的毫秒数
public static void main(String[] args) { long start = System.currentTimeMillis(); System.out.println(start); for (int i = 0;i<100;i++) { Student student = new Student(); student.setId("1"); student.setName("mrc"); System.out.println(student.getId()); System.out.println(student.getName()); } long end = System.currentTimeMillis(); System.out.println(end); System.out.println("总耗时:"+(end-start)); }
//通过克隆的方式创造相同的对象进行测试
public static void main(String[] args) { long start = System.currentTimeMillis(); System.out.println(start); Student student = new Student(); student.setId("1"); student.setName("mrc"); for (int i = 0;i<100;i++) { Student student1 = (Student) student.clone(); System.out.println(student1.getId()); System.out.println(student1.getName()); } long end = System.currentTimeMillis(); System.out.println(end); System.out.println("总耗时:"+(end-start)); }
果然,性能上还是存在微小的差距的。
总结
原型模式,简单的理解就是用于创建重复对象时候,对减少new关键字的使用而存在的一个设计模式,它的好处在于能够快速创建相同的对象。
缺点就在于:需要被克隆的对象需要实现Cloneable接口,对于全局我们需要考虑,不能一味的实现。还是得全局考虑。合适才是最重要的
参考:https://www.runoob.com/design-pattern/prototype-pattern.html
码云:https://gitee.com/mrc1999/23GOF
相关文章推荐
- 创建型模式-原型模式(对象的克隆)
- 对象的克隆——原型模式(三)
- [导入]C#面向对象设计模式纵横谈(6):Prototype 原型模式(创建型模式).zip(9.56 MB)
- 原型模式-Prototype Pattern 对象的克隆——原型模式(一):大同小异的工作周报,原型模式概述
- 原型模式——对象创建型模式
- 对象的克隆——原型模式(四):原型管理器的引入和实现,原型模式总结
- JAVA设计模式(05):创建型-原型模式(Prototype)
- 对象的克隆——原型模式(四)
- 对象的克隆——原型模式
- C++设计模式6--原型模式Prototype--原始对象的克隆
- 原型模式(Prototype Pattern对象创建型模式)
- 对象的克隆——原型模式
- 设计模式五:Prototype原型模式——对象创建型模式
- 原型模式(Prototype)与Delphi对象克隆技术
- 原型模式(Prototype Pattern)--对象的克隆
- 原型模式-Prototype Pattern 对象的克隆——原型模式(二):工作周报的原型模式解决方案
- 对象的克隆——原型模式(二)
- 解说21种设计模式之第一篇_原型模式(对象创建型)
- PROTOTYPE(原型)—对象创建型模式
- ProtoType(原型)-对象创建型模式