zoukankan      html  css  js  c++  java
  • Prototype(原型)

    意图:

    用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

    适用性:

    当要实例化的类是在运行时刻指定时,例如,通过动态装载;或者为了避免创建一个与产品类层次平行的工厂类层次时;或者当一个类的实例只能有几个不同状态组合中的一种时。建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便一些。

    #!/usr/bin/python
    #coding:utf8
    '''
    Prototype
    '''
     
    import copy
     
    class Prototype:
        def __init__(self):
            self._objects = {}
     
        def register_object(self, name, obj):
            """Register an object"""
            self._objects[name] = obj
     
        def unregister_object(self, name):
            """Unregister an object"""
            del self._objects[name]
     
        def clone(self, name, **attr):
            """Clone a registered object and update inner attributes dictionary"""
            obj = copy.deepcopy(self._objects.get(name))
            obj.__dict__.update(attr)
            return obj
     
     
    def main():
        class A:
            def __str__(self):
                return "I am A"
     
        a = A()
        prototype = Prototype()
        prototype.register_object('a', a)
        b = prototype.clone('a', a=1, b=2, c=3)
     
        print(a)
        print(b.a, b.b, b.c)
     
     
    if __name__ == '__main__':
        main()
  • 相关阅读:
    完美正方形-深度遍历
    CGCDSSQ Codeforces 475D
    [国家集训队]happiness
    点分治学习笔记
    [POI2008]PLA-Postering
    [20200801NOIP提高组模拟T2]电话线铺设
    [20200801NOIP提高组模拟T3]老司机
    [HNOI2001]产品加工
    分层图最短路[学习笔记]
    次芝麻
  • 原文地址:https://www.cnblogs.com/navysummer/p/9835110.html
Copyright © 2011-2022 走看看