Python设计模式创建型原型模式
作者:范桂飓 时间:2023-07-21 21:19:25
一、原型模式
原型是相对于复制、克隆而言的,但是不同于模板,模板创造出的东西是一模一样,而原型创造出的东西是允许存在差异化和个性化的。
原型模式的实现思路是:“深拷贝” 和 “属性更新”。定义一个原型,设计一个拷贝接口,不需要频繁实例化类,只需要拷贝。
优点:
减少因为对象实例化而产生的损耗,并实行动态装载。
二、应用场景
三、代码示例
要实现多个人的自我介绍,一般方法是每个人都创建一个对象,但是使用原型模式之后,只需要实例化一个对象(标准人),后面的人都已这个标准人为基础来实现个性化。
import copy
class Information:
"""个人信息"""
def __init__(self):
self.name = None
self.ager = None
self.height = None
def run(self):
"""
自我介绍方法
:return:
"""
print("我叫{}: 年龄:{} 身高:{}".format(self.name, self.ager, self.height))
class Prototype:
def __init__(self, obj):
self.copy_object = obj()
def clone(self, **attr):
obj = copy.deepcopy(self.copy_object)
obj.__dict__.update(attr)
return obj
if __name__ == '__main__':
test = Prototype(Information)
a = test.clone(name='张山', ager="30", height='170cm')
a.run()
b = test.clone(name='李飞', ager="20", height='190cm')
b.run()
来源:https://is-cloud.blog.csdn.net/article/details/122934315
标签:Python,设计模式,原型模式
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
SQL SERVER 2014 安装图解教程(含SQL SERVER 2014下载)
2024-01-16 05:16:07
![](https://img.aspxhome.com/file/2023/1/113591_0s.png)
一文教你用Python中progress库实现进度条
2023-09-14 10:28:31
![](https://img.aspxhome.com/file/2023/5/101465_0s.gif)
Python使用pymysql从MySQL数据库中读出数据的方法
2024-01-26 15:26:24
Django权限机制实现代码详解
2022-09-18 01:21:51
HTTP状态码
2009-09-21 12:46:00
python对RabbitMQ的简单入门使用教程
2021-01-13 17:53:44
![](https://img.aspxhome.com/file/2023/4/93734_0s.jpg)
CentOS7服务器中apache、php7以及mysql5.7的安装配置代码
2023-11-19 02:14:52
python调用百度语音REST API
2022-09-16 18:19:07
PHP的mysqli_select_db()函数讲解
2023-06-07 18:59:44
![](https://img.aspxhome.com/file/2023/8/55458_0s.png)
ECharts设置x轴刻度间隔的2种解决方法
2023-08-28 04:18:38
![](https://img.aspxhome.com/file/2023/1/56141_0s.png)
python matplotlib.pyplot.plot()参数用法
2023-07-13 17:39:48
一文详解golang通过io包进行文件读写
2024-05-09 10:07:52
Next.js应用转换为TypeScript方法demo
2024-05-11 09:36:17
![](https://img.aspxhome.com/file/2023/2/125952_0s.png)
Vue中keep-alive的两种应用方式
2024-05-09 15:10:53
![](https://img.aspxhome.com/file/2023/4/126604_0s.jpg)
asp如何计算下载一个文件需要多长时间?
2009-11-25 20:17:00
Python 中使用 argparse 解析命令行参数
2023-10-26 14:10:42
windows下python虚拟环境virtualenv安装和使用详解
2023-08-30 11:06:39
Python 类属性与实例属性,类对象与实例对象用法分析
2023-03-12 01:43:03
![](https://img.aspxhome.com/file/2023/3/91903_0s.png)
Python使用PyCrypto实现AES加密功能示例
2022-09-18 13:23:57
Python的Flask框架应用调用Redis队列数据的方法
2023-04-20 14:14:38