原型模式
- 使你能够复制已有对象, 而又无需使代码依赖它们所属的类。
- 你有一个对象, 并希望生成与其完全相同的一个复制品
- 原型模式将克隆过程委派给被克隆的实际对象
- 模式为所有支持克隆的对象声明了一个通用接口, 该接口让你能够克隆对象
原型角色
骑士
import copy
class Knight:
def __init__(self, value='default'):
self.value = value
# 核心部分
def clone(self, **attrs):
"""
自我克隆的方法
新创建的对象可以传新的属性和增加属性
"""
obj = copy.deepcopy(self)
obj.__dict__.update(attrs)
return obj
应用
prototype = Knight()
a = prototype.clone()
b = prototype.clone(value='a-value', category='a')
c = a.clone(value='b-value', is_checked=True)
print(a.value)
print(b.value)
print(b.category)
print(c.value)