0%

设计模式-原型模式

使用原型对象的方法创建对象的实列,创建的实例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());
    }
}