python设计模式(三):原型模式—快速实例化类的一种途径-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

python设计模式(三):原型模式—快速实例化类的一种途径

简介: 原型是相对于复制、克隆而言,但是不同于模板,模板创造出的东西是一模一样,而原型创造的东西是允许差异化和个性化存在,这就是原型。 原型模式最为核心的两点是:拷贝、属性更新;拷贝指深拷贝copy.deepcopy,属性更新是类的自有属性__dict__的更新。

原型是相对于复制、克隆而言,但是不同于模板,模板创造出的东西是一模一样,而原型创造的东西是允许差异化和个性化存在,这就是原型。


原型模式最为核心的两点是:拷贝、属性更新;拷贝指深拷贝copy.deepcopy,属性更新是类的自有属性__dict__的更新。


实例代码:

# -*- coding:utf-8 -*-

import copy


class Information:
    """个人信息"""

    def __init__(self):
        self.name = None
        self.ager = None
        self.height = None

    def run(self):
        """
        自我介绍方法
        :return:
        """

        print("我叫{}: 年龄:{} 身高:{}".format(self.name, self.ager, self.height))


class Prototype:
    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()


要实现多个人的自我介绍,一般方法是每个人都创建一个对象,但是使用原型模式之后,只需要实例化一个对象(标准人),后面的人都已这个标准人为基础来实现个性化。


这就是原型模式的精要:定义一个原型,设计一个拷贝接口,不需要频繁实例化类,只需要拷贝yuanxing 。他的好处是可以减少因为对象实例化而产生的损耗,并实行动态装载。


2019-03-12-20_38_10.png

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章
最新文章
相关文章