暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

python 面向对象设计模式实践篇(6)-创建型:原型模式实践

小儿来一壶枸杞酒泡茶 2021-03-24
446

原型模式


所属分类

  • 创建型模式

意图

  • 定义用一个已经创建的实例作为原型,通过复制该原型对象并且能够在保证性能的同时创建一个和原型相同或相似的新对象。

原型模式的核心:

  • 拷贝:深拷贝copy.deepcopy,
  • 属性更新:类的自有属性__dict__的更新。

角色对象:

  • 原型接口类:用于克隆拷贝复制具体的原来的对象。

实现方式:


# 具体的产品类
class Computer():

    def __init__(self,cpu,power,graphics_card,memory_module):
        self.cpu = cpu
        self.power = power
        self.graphics_card = graphics_card
        self.memory_module = memory_module

    def deep_clone_computer(selfs):
        from copy import deepcopy
        return deepcopy(selfs)

if __name__ == '__main__':
    # 创建第1个对象。克隆自己的形式
    test = Computer("四核CPU",'X电源','X显卡','X内存条')
    # 创建第2个对象。克隆自己的形式
    print(test.cpu)
    print(test.power)
    print(test.graphics_card)
    print(test.memory_module)
    test2 = test.deep_clone_computer()
    print('='*20)
    test2.cpu='1核CPU'
    test2.memory_module = 'YYY内存条'
    print(test2.cpu)
    print(test2.power)
    print(test2.graphics_card)
    print(test2.memory_module)



输出结果:

四核CPU
X电源
X显卡
X内存条
====================
1核CPU
X电源
X显卡
YYY内存条

优点:

  • 内存拷贝比在内存新建实例能节省资源;
  • 简化对象创建,避免了构造函数的约束

个人其他博客地址

简书:https://www.jianshu.com/u/d6960089b087

掘金:https://juejin.cn/user/2963939079225608

小钟同学 | 文 【原创】| QQ:308711822

  • 1:本文相关描述主要是个人的认知和见解,如有不当之处,还望各位大佬指正。
  • 2:关于文章内容,有部分内容参考自互联网,如有链接会声明标注;如没有及时标注备注的链接的,如有侵权请联系,我会立即删除处理哟。


文章转载自小儿来一壶枸杞酒泡茶,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论