跳转至

原型模式

  • 使你能够复制已有对象, 而又无需使代码依赖它们所属的类。
  • 你有一个对象, 并希望生成与其完全相同的一个复制品
  • 原型模式将克隆过程委派给被克隆的实际对象
  • 模式为所有支持克隆的对象声明了一个通用接口, 该接口让你能够克隆对象

一个细胞的分裂


原型角色

骑士

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)