STUNUM

面有萌色,胸有丘壑。心有猛虎,细嗅蔷薇。

嗨,我是王鑫 (@stunum),一名 Python 开发者。


Python web开发,后端以Django框架为主,前端使用Vue.js...

python设计模式之原型模式

原型模式

意义:

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

适用性:

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

举例:
import copy

class Information(object):
    """个人信息"""
    def __init__(self):
        self.name = None
        self.ager = None
        self.height = None

    def run(self):
        """
        自我介绍方法
        """
        print(f"我叫:{self.name} 年龄:{self.ager} 身高:{self.height}")

class Prototype(object):
    def __init__(self, obj):
        self.copy_object = obj()

    def clone(self, **attr):
        obj = copy.deepcopy(self.copy_object)
        obj.__dict__.update(attr)
        return obj

if __name__ == '__main__':
    test = Prototype(Information)
    a = test.clone(name='张山', ager="30", height='170cm')
    a.run()
    b = test.clone(name='李飞', ager="20", height='190cm')
    b.run()

输出结果:

我叫:张山 年龄:30 身高:170cm
我叫:李飞 年龄:20 身高:190cm
最近的文章

python设计模式之单例模式

单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点。意义: 当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。 当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。举例:class Singleton(object): def __new__(cls, *args, **kwargs): if not hasattr(cls, '_instance'): cls._instance =...…

水滴石穿继续阅读
更早的文章

python设计模式之抽象工厂

抽象工厂意义:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。适用性: 一个系统要独立于它的产品的创建、组合和表示时。 一个系统要由多个产品系列中的一个来配置时。 当你要强调一系列相关的产品对象的设计以便进行联合使用时。 当你提供一个产品类库,而只想显示它们的接口而不是实现时。举例:class A(object): def __init__(self): self.word = "运行A" def run(self): p...…

水滴石穿继续阅读