原型模式及深拷贝、浅拷贝详解
本文简单介绍原型模式,以及深拷贝、浅拷贝的区别与问题。
原型模式 -Prototype
概述
- 用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象。
- 不需要知道任何创建的细节,不调用构造函数
类型:创建型设计模式
适用场景:
- 类初始化消耗较多资源
- new产生一个对象需要非常繁琐的过程(数据准备、访问权限等)
- 构造函数比较复杂
- 循环体中产生大量的对象
关键代码
- 实现克隆操作,在 JAVA 继承 Cloneable,重写 clone()。
- 原型模式同样用于隔离类对象的使用者和具体类型(易变类)之间的耦合关系,它同样要求这些"易变类"拥有稳定的接口。
UML
coding
优点
- 性能高于new一个对象
- 简化创建过程
缺点
- 必须配备克隆方法
- 对克隆复杂对象或对克隆出的对象进行复杂改造时,容易引人风险
- 深拷贝、浅拷贝要运用得当