美文网首页python模式设计思想
python设计模式(三):原型模式—快速实例化类的一种途径

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

作者: Python之战 | 来源:发表于2019-02-04 22:30 被阅读8次

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

原型模式最为核心的两点是:拷贝、属性更新;拷贝指深拷贝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()

结果:
我叫张山: 年龄:30 身高:170cm
我叫李飞: 年龄:20 身高:190cm

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

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

image

相关文章

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

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

  • Java设计模式:别人再问你设计模式,叫他看这篇文章

    设计模式的分类 设计模式一般分为三类:创建型模式、结构型模式、行为型模式。 创建型模式:对象实例化的模式,创建型模...

  • Spring 准备内容

    准备内容 原型设计模式 PropotypeModle 原型模式也属于创造型设计模式,用原型实例指定创建对象的种类,...

  • 从原型继承到ES6 class语法

    原型 在面向对象的文章中提过的一种设计模式-组合使用构造函数模式和原型模式 构造函数用于定义实例属性,原型模式用于...

  • 设计模式

    一、设计模式的分类 创建型模式:对象实例化的模式,创建型模式用于解耦对象的实例化过程。 结构型模式:把类或对象结合...

  • Python 的单例模式

    单例模式(Singleton)是一种程序设计模式,它保证在程序中,应用该模式的类只有一个实例。Python 其实没...

  • 设计模式-原型模式

    设计模式-原型模式 定义 原型模式(Prototype Pattern)是指原型实例指定创建对象的种类,并且通过拷...

  • 必知必会的设计模式6

    单例模式(Singleton Pattern) 属创建类设计模式,「确保某个类只有一个实例,而且自行实例化并向整个...

  • php单例模式

    单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 单例模式是一种常见的设计模式,在计算机系...

  • 设计模式(1)工厂模式

    设计模式有 23 种,按大类分的化可以分为三类 创建型(如:工厂模式、单例模式、原型模式等) 结构模式型(如:装饰...

网友评论

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

    本文链接:https://www.haomeiwen.com/subject/bhrmsqtx.html