type
status
date
slug
summary
tags
category
icon
password
Email
水清月冷,香消影瘦,人立黄昏。——吴文英《极相思·题陈藏一水月梅扇》
文章首发于我的个人博客:欢迎大佬们来逛逛
设计模式项目地址:C++ Java python实现
原型模式
用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象,简单理解就是“克隆指定对象”
某些结构复杂的对象的创建工作中由于需求的变化,这些对象经常面临着剧烈的变化,但是他们却拥有比较稳定一致的接口。此时便可以使用原型模式。
实现步骤
- 提供一个抽象原型类:规定了具体原型对象必须实现的接口。
- 提供多个具体原型类:实现抽象原型类的
clone()
方法,它是可被复制的对象。
- 提供访问类:使用具体原型类中的
clone()
方法来复制新的对象。
案例
我要发布文章,但是文章从头写太麻烦了,我们可以从已经存在的文章模板中导入,然后再简单修改即可,这样就省时省力。
因此我们需要使用原型模式,我们必须实现一个
clone
或者 copy
的拷贝方法,目的是将原始内容直接拷贝到新的内存中,而不是重新操作,我们必须实现拷贝构造函数。类:
- 抽象原型类:TemplateArticle,提供一个抽象方法
clone
- 具体原型类:Article ,实现其抽象方法,表示下一次创建时可以直接使用
.clone
来快速拷贝一份。
为什么 clone 有效呢?
- 拷贝构造函数中的对容器的赋值操作远比 push_back 操作快得多。
总结
优点
- 如果创建新的对象比较复杂,可以利用原型模式简化对象的创建过程,同时也能够提高效率。
- 简化对象的创建,无需理会创建过程。
- 可以在程序运行时(对象属性发生了变化)获得一份内容相同的实例,他们之间不会相互干扰
缺点
- 每一个类都必须配备一个克隆方法,对于已有的没有克隆方法的类来说是致命的。
- 作者:Yuleo
- 链接:https://www.helloylh.com/article/ab360112-a93f-4f20-b6ec-51888cd6961e
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。