Prototype pattern (Python recipe)

转载 2015年07月08日 14:50:33

原文链接:http://code.activestate.com/recipes/86651-prototype-pattern/

http://dongweiming.github.io/python-pototype.html

from copy import deepcopy

class Prototype:
    def __init__(self):
        self._objs = {}
        
    def registerObject(self, name, obj):
        """
        register an object.
        """
        self._objs[name] = obj
        
    def unregisterObject(self, name):
        """unregister an object"""
        del self._objs[name]
        
    def clone(self, name, **attr):
        """clone a registered object and add/replace attr"""
        obj = deepcopy(self._objs[name])
        obj.__dict__.update(attr)
        return obj
    

if __name__ == '__main__':
    class A:
        pass


    a=A()
    prototype=Prototype()
    prototype.registerObject("a",a)
    b=prototype.clone("a",a=1,b=2,c=3)


    # 这里会返回对象a
    print(a)
    # 这里的对象其实已经被修改成(1, 2, 3)
    print(b.a, b.b, b.c)


相关文章推荐

python学习 + recipes

python kindle calibre recipes

设计模式-原型模式-prototype-python

原型模型

聚类分析之k-prototype算法解析

K-prototype是处理混合属性聚类的典型算法。继承Kmean算法和Kmode算法的思想。并且加入了描述数据簇的原型和混合属性数据之间的相异度计算公式。 常规定义:X={X1,X2,X3...

原型模式【Prototype Pattern】

今天我们来讲原型模式,这个模式的简单程度是仅次于单例模式和迭代器模式,非常简单,但是要使用好这个模式还有很多注意事项。我们通过一个例子来解释一下什么是原型模式。         现在电子账单...

设计模式之原型模式(Prototype Pattern)

概述原型模式属于对象的创建模式。通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。原型模式主要使用场景: 1.类初始化需要消耗非常多的资源。 2....

原型模式(Prototype Pattern)

原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。        这种模式是实现了一个原型接口,...

Java设计模式四: 原型模式(Prototype Pattern)

Java设计模式四: 原型模式(Prototype Pattern)   原型模式是一种创建型设计模式,它通过复制一个已经存在的实例来返回新的实例,而不是新建实例.被复制的实例就是我们所称的原型,这...
  • zoubf
  • zoubf
  • 2016年01月22日 09:56
  • 264

"围观"设计模式(10)--创建型之原型模式(Prototype Pattern)

原型模式是创建型模式的一种,其特点在于通过“复制”一个已经存在的实例来返回新的实例,而不是新建实例。被复制的实例就是我们所称的“原型”,这个原型是可定制的。 原型模式多用于创建复杂的或者耗时的实例,因...

设计模式拾荒之原型模式(Prototype Pattern)

参考书籍: 《Design Patterns: Elements of Reusable Object-Oriented Software》 设计模式包教不包会 很多讲解原型模式的博文,甚至视屏教程中...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Prototype pattern (Python recipe)
举报原因:
原因补充:

(最多只允许输入30个字)