设计模式 原型模式

本文将介绍设计模式中的原型模式。

一、什么原型模式?

通过请求原型对象复制自己的方式,实现对象的快速创建。

二、拷贝地址、浅克隆与深克隆

1. 拷贝地址

不复制对象,只返回原对象的地址。

2. 浅克隆

复制对象,对象的引用类型成员变量只拷贝地址,返回新对象的地址。

3. 深克隆

复制对象,对象的引用类型成员变量也进行克隆,返回新对象的地址。

三、实现

1. 角色

  • Prototype 抽象原型类:
    • 所有具体原型类的公共父类
    • 声明了克隆方法
  • ConcretePrototype 具体原型类:
    • 实现了克隆方法,在克隆方法中返回自己的克隆

2. 简单示例

Prototype:

1
2
3
interface Prototype {
public Prototype clone();
}

ConcretePrototype:

1
2
3
public class ConcretePrototype implements Prototype {
···
}

四、优缺点

1. 优点

  • 可以简化对象的创建过程
  • 不需要额外的工厂类,简化了创建结构

2. 缺点

  • 如果需要实现深克隆,则需要编写较为复杂的代码,且对象的引用类型成员变量也得实现深克隆

参考

  • 《Java 设计模式》