设计模式-原型模式

使用原型对象的方法创建对象的实列,创建的实例equals原型

final 类型修饰的成员变量不能进行深度拷贝

场景

  • 类初始化需要消化非常多的资源,这个资源包括数据、硬件资源等
  • 构造对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式
  • 工厂模式中使用
  • 共有信息很多

浅拷贝

对象内引用原先原型的对象

深拷贝

对象内引用也拷贝一份

代码实现

package prototype;

//Cloneable 标记对象可拷贝
public class PersonClone implements Cloneable {

@Override //Override Object方法
public PersonClone clone(){
    try {
        //clone 不会调用构造方法
        return (PersonClone)super.clone();
    } catch (CloneNotSupportedException e) {
        e.printStackTrace();
    }
    return null;
}

}

package prototype;

public class MainClass {
public static void main(String[] args) {
PersonClone personClone = new PersonClone();
PersonClone clone = personClone.clone();
System.out.println(personClone.hashCode());
System.out.println(clone.hashCode());
}
}