type
status
date
slug
summary
tags
category
icon
password
整理定义
中文名称:原型模式
英文名称:prototype pattern
出处 | 定义 |
中国大百科全书 | 使用一个原型来刻画要创建的类型,通过复制这个原型得到新的类的一种设计模式 |
设计模式 | 原型模式是一种创建型设计模式, 使你能够复制已有对象, 而又无需使代码依赖它们所属的类。 |
百度百科 | 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 |
维基百科 | 原型模式是创建型模式的一种,其特点在于通过“复制”一个已经存在的实例来返回新的实例,而不是新建实例。被复制的实例就是我们所称的“原型”,这个原型是可定制的。
原型模式多用于创建复杂的或者耗时的实例,因为这种情况下,复制一个已经存在的实例使程序运行更高效;或者创建值相等,只是命名不一样的同类数据。 |
复述展开
What is prototype pattern
原型模式作为一种创建型对象的设计模式,它主要通过原型类提供的克隆接口来创建与原型一致的对象。不需要知道原型的类也可以创建一个一模一样的对象。
原型模式结构
![notion image](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fdea38628-64dc-40fd-8d17-2efa87e3d554%2Fc034b258-1c2e-4d72-9536-5efb005f29e3%2FUntitled.png?table=block&id=290b5653-dbf6-4e2f-a782-9b69c7a03d49&t=290b5653-dbf6-4e2f-a782-9b69c7a03d49&width=480&cache=v2)
- 原型 (Prototype) 接口将对克隆方法进行声明。 在绝大多数情况下, 其中只会有一个名为
clone
克隆的方法。
- 具体原型 (Concrete Prototype) 类将实现克隆方法。 除了将原始对象的数据复制到克隆体中之外, 该方法有时还需处理克隆过程中的极端情况, 例如克隆关联对象和梳理递归依赖等等。
- 客户端 (Client) 可以复制实现了原型接口的任何对象。
理解体会
原型模式的优缺点:
优点
- 性能优良:当对象创建成本较高时,克隆可以显著提高性能,因为它通常比实例化一个全新对象更快。
- 简化对象创建:如果对象的创建过程复杂或者需要很多步骤,使用原型模式可以简化这个过程。
- 动态添加或删除对象:原型模式允许在运行时动态地添加或删除对象。
缺点
- 克隆复杂对象可能很复杂:如果对象有循环引用或者复杂的构造逻辑,克隆可能会变得困难。
- 克隆可能导致数据一致性问题:如果对象的某些属性是引用类型,那么浅克隆可能会导致数据一致性问题。
原型模式的应用场景包括:
- 当一个系统需要独立于其产品的创建、组合和表示时,可以使用原型模式。
- 当要实例化的类在运行时刻被指定时,可以使用原型模式。
- 当需要避免创建一个与产品类层次平行的工厂类层次时,可以使用原型模式。
- 当类的实例只能有几个不同状态组合中的一种时,通过克隆原型对象得到新实例可能比手工实例化更方便。
具体到语言
- Python 的
Cloneable
(克隆) 组件就是一个典型的原型模式。
- Java 的
Cloneable
(可克隆) 接口也是原型模式。
任何类都可通过实现该接口来实现可被克隆的性质。
java.lang.Object#clone()
(类必须实现 java.lang.Cloneable
接口)快速跳转链接
【概念解析】启动
【概念解析】Day 1 - 10
【概念解析】Day 11 - 20
【概念解析】Day 21 - 30
【概念解析】Day 31 - 40
【概念解析】Day 41 - 50
【概念解析】Day 51 - 60
【概念解析】Day 61 - 70
【概念解析】Day 71 - 80
【概念解析】Day 81 - 90
- 作者:eachenkuang
- 链接:https://kuangyichen.com/article/industry-day32
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。