Day32【概念解析】原型模式
目录 ▼
整理定义
中文名称:原型模式
英文名称:prototype pattern
复述展开
What is prototype pattern
💡 原型模式作为一种创建型对象的设计模式,它主要通过原型类提供的克隆接口来创建与原型一致的对象。不需要知道原型的类也可以创建一个一模一样的对象。
原型模式结构

-
原型 (Prototype) 接口将对克隆方法进行声明。 在绝大多数情况下, 其中只会有一个名为 clone克隆的方法。
-
具体原型 (Concrete Prototype) 类将实现克隆方法。 除了将原始对象的数据复制到克隆体中之外, 该方法有时还需处理克隆过程中的极端情况, 例如克隆关联对象和梳理递归依赖等等。
-
客户端 (Client) 可以复制实现了原型接口的任何对象。
理解体会
原型模式的优缺点:
优点
-
性能优良:当对象创建成本较高时,克隆可以显著提高性能,因为它通常比实例化一个全新对象更快。
-
简化对象创建:如果对象的创建过程复杂或者需要很多步骤,使用原型模式可以简化这个过程。
-
动态添加或删除对象:原型模式允许在运行时动态地添加或删除对象。
缺点
-
克隆复杂对象可能很复杂:如果对象有循环引用或者复杂的构造逻辑,克隆可能会变得困难。
-
克隆可能导致数据一致性问题:如果对象的某些属性是引用类型,那么浅克隆可能会导致数据一致性问题。
原型模式的应用场景包括:
-
当一个系统需要独立于其产品的创建、组合和表示时,可以使用原型模式。
-
当要实例化的类在运行时刻被指定时,可以使用原型模式。
-
当需要避免创建一个与产品类层次平行的工厂类层次时,可以使用原型模式。
-
当类的实例只能有几个不同状态组合中的一种时,通过克隆原型对象得到新实例可能比手工实例化更方便。
具体到语言
-
Python 的 Cloneable (克隆) 组件就是一个典型的原型模式。
-
Java 的 Cloneable (可克隆) 接口也是原型模式。
任何类都可通过实现该接口来实现可被克隆的性质。
java.lang.Object#clone() (类必须实现 java.lang.Cloneable 接口)