原型模式
也称为克隆模式,属于创建型模式
普通版
package com.demo.prototype;
/**
* 原型模式(克隆模式)
* 创建型模式
* 就是通过原型对象返回一个完全相同或相近的对象,包括其中的属性值
* 可以在不知道对象的具体类型的情况下创造对象
* 并且对于那些创建十分耗时的对象来说,clone比new速度快
*/
public class Prototype implements Cloneable{
//JDK中有实现原型模式的方法,但是该对象所对应的类必须实现Cloneable的接口
Prototype prototype = new Prototype();
public Prototype Clone() throws CloneNotSupportedException {
return (Prototype) prototype.clone();
}
}
深克隆原理版
package com.demo.prototype;
/**
* 深克隆原理版
* 由下可看出:
* 无论是对克隆对象d1的Y或者通过d1修改C的X的值
* 都不再对原型对象的值进行修改,也就是互不影响了
* 原理:
* 深克隆在对原型对象进行克隆时,会将原型对象的每个引用类型的属性也克隆一份
* 并且赋值给克隆对象
*/
public class DeepPrototype {
public static void main(String[] args) throws CloneNotSupportedException {
C c = new C();
c.setX(1);
D d = new D();
d