属于创建型模式 (共5种)

    Java 内部自带 支持原型模式 object.clone()

    目的:
    如果要产生的新的对象和原来的对象属性相同,可以直接克隆

    用法:
    实现一个类的克隆,必须实现 cloneable接口 这是一个标记型接口(接口内没有要实现的方法)
    Object类中clone()方法是 protected 修饰的 只有子类可以调用,而且是native方法 C++写的

    注意:
    从效率上看 克隆并不比new一个对象快 ,只是省去了指定属性的语句
    深克隆、浅克隆问题
    浅克隆
    如果克隆对象属性中包含其他类型的引用型属性,则只会克隆原类中的引用地址,
    导致一个类修改引用型属性,另一个已经克隆完成的类也会跟着改变。
    深克隆
    被克隆类中的引用型属性也实现cloneable接口,重写clone方法;
    被克隆主类中,重写克隆方法中再加入引用类型的克隆方法
    image.png

    String类型不需要进行深克隆,String类型指定了常量池,改变属性,改变的是指向常量池中的地址值