chase-h

设计模式之原型模式

用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。

我们已经有了一个String[]数组,想再创建一个一模一样的String[]数组,把现有数组的元素复制到新数组。我们把这个创建过程封装一下,就成了原型模式。

// 原型:
String[] original = { "Apple", "Pear", "Banana" };
// 新对象:
String[] copy = Arrays.copyOf(original, original.length);
//具体原型类
class Realizetype implements Cloneable {
    Realizetype() {
        System.out.println("具体原型创建成功!");
    }
    public Object clone() throws CloneNotSupportedException {
        System.out.println("具体原型复制成功!");
        return (Realizetype) super.clone();
    }
}
//原型模式的测试类
public class PrototypeTest {
    public static void main(String[] args) throws CloneNotSupportedException {
        Realizetype obj1 = new Realizetype();
        Realizetype obj2 = (Realizetype) obj1.clone();
        System.out.println("obj1==obj2?" + (obj1 == obj2));
    }
}

原型模式的克隆分为浅克隆和深克隆。

  • 浅克隆:创建一个新对象,新对象的属性和原来对象完全相同,对于非基本类型属性,仍指向原有属性所指向的对象的内存地址。
  • 深克隆:创建一个新对象,属性中引用的其他对象也会被克隆,不再指向原有对象地址。

实际例子:简历打印、奖状打印

分类:

技术点:

相关文章:

  • 2021-04-25
  • 2022-01-19
  • 2021-06-06
  • 2021-11-08
猜你喜欢
  • 2021-12-13
  • 2021-10-22
  • 2021-11-20
  • 2021-06-01
相关资源
相似解决方案