模式介绍

原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

使用场景

  • 当一个系统应该独立于它的产品创建、构成和表示时
  • 当要实例化的类是在运行时刻指定时
  • 当创建对象的成本较大时
  • 当需要避免创建一个与产品类层次平行的工厂类层次时

代码示例

// 原型接口
public interface Prototype {
    Prototype clone();
}

// 具体原型类
public class ConcretePrototype implements Prototype {
    private String name;

    public ConcretePrototype(String name) {
        this.name = name;
    }

    @Override
    public Prototype clone() {
        return new ConcretePrototype(this.name);
    }

    public String getName() {
        return name;
    }
}

// 使用示例
public class Client {
    public static void main(String[] args) {
        ConcretePrototype prototype = new ConcretePrototype("原始对象");
        ConcretePrototype clone = (ConcretePrototype) prototype.clone();
        System.out.println("克隆对象名称: " + clone.getName());
    }
}

优缺点

优点

  • 性能提高
  • 逃避构造函数的约束
  • 减少子类的构建

缺点

  • 必须实现克隆方法
  • 克隆方法位于类的内部
  • 对象克隆有时较复杂

注意事项

  • 克隆分为浅克隆和深克隆
  • 深克隆需要实现Serializable接口
  • 克隆不会调用构造函数
  • 克隆对象与原型对象不是同一个对象