🎨设计模式:原型模式
00 分钟
2023-7-13
2023-11-23
type
status
date
slug
summary
tags
category
icon
password
Email
💓
水清月冷,香消影瘦,人立黄昏。——吴文英《极相思·题陈藏一水月梅扇》
🔆
文章首发于我的个人博客:欢迎大佬们来逛逛
🔆
设计模式项目地址:C++ Java python实现

原型模式

用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象,简单理解就是“克隆指定对象
某些结构复杂的对象的创建工作中由于需求的变化,这些对象经常面临着剧烈的变化,但是他们却拥有比较稳定一致的接口。此时便可以使用原型模式。

实现步骤

  1. 提供一个抽象原型类:规定了具体原型对象必须实现的接口。
  1. 提供多个具体原型类:实现抽象原型类的 clone() 方法,它是可被复制的对象。
  1. 提供访问类:使用具体原型类中的 clone() 方法来复制新的对象。
notion image
 

案例

我要发布文章,但是文章从头写太麻烦了,我们可以从已经存在的文章模板中导入,然后再简单修改即可,这样就省时省力。
因此我们需要使用原型模式,我们必须实现一个 clone 或者 copy 的拷贝方法,目的是将原始内容直接拷贝到新的内存中,而不是重新操作,我们必须实现拷贝构造函数
类:
  • 抽象原型类:TemplateArticle,提供一个抽象方法clone
  • 具体原型类:Article ,实现其抽象方法,表示下一次创建时可以直接使用 .clone 来快速拷贝一份。
为什么 clone 有效呢?
  • 拷贝构造函数中的对容器的赋值操作远比 push_back 操作快得多。
notion image

总结

优点
  • 如果创建新的对象比较复杂,可以利用原型模式简化对象的创建过程,同时也能够提高效率。
  • 简化对象的创建,无需理会创建过程
  • 可以在程序运行时(对象属性发生了变化)获得一份内容相同的实例,他们之间不会相互干扰
缺点
  • 每一个类都必须配备一个克隆方法,对于已有的没有克隆方法的类来说是致命的。
 

评论
  • Twikoo
  • Valine