当DP遇见Py(六) -- 原型模式
定义:
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
类图:
类型:创建型
实例:
从简历原型,生成新的简历。
C++ 实现
1 | #include <iostream> |
Python 实现
1 | # -*- coding=utf-8 -*- |
执行结果:
1 | 大鸟 男 29 |
Tips:
- 以上的
Python
实现比C++
提供了更丰富和完整的原型模式
实现。使用Prototype
类来管理原型
,并提供统一的clone
方法来生成新对象。 - Python为对象提供的copy模块中的copy方法和deepcopy方法已经实现了原型模式。
copy
方法实现浅拷贝,deepcopy
方法实现深拷贝。 __str__
魔术方法。用来定义对象如何转换为字符串形式,被print
所调用。关于Python
的魔术方法请见《当DP遇见Py(四) — 代理模式》中的介绍。__dict__
。Python
中的__dict__
比较神奇,一两句话也说不清楚。简而言之,你可以把__dict__
看做Python
对象的属性字典(注:Python中一切皆对象,O(∩∩)O~)。Python
的强大的动态能力,如:Python的对象可以在运行期动态添加定义时没有的属性,就是这货在提供支持。语句`obj._dict.update(attr)就是根据用户传入的
attr来更新对象
obj`的属性。
“克隆”是要给钱地!