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

OOP设计模式Python实现--创建型模式之原型模式

稻壳编程 2020-03-22
153

作者简介

211工程院校贵州大学管理学院硕士研究生、互联网金融行业资深DevOps研发工程师. 曾在国内多家知名互联网公司 平安科技、微众银行、顺丰科技、魅族任职. 具有多年国内一线互联网公司自动化运维平台设计与开发经验。



OOP设计模式Python实现

创建型模式--原型模式

前言:

创建型模式(Creational Pattern)对类的实例化过程进行抽象,能够将代码中对象的创建和对象的使用分离。外界对于这些对象不需清楚其具体的实现细节只需知道它们的共同接口即可,这样开发出代码结构更加清晰且符合单一职责原则。原型模式用一个已经创建的实例作为原型,通过复制该原型对象并且能够在保证性能的同时创建一个和原型相同或相似的新对象,代码中实现了一个原型接口,该接口用于创建当前对象的克隆,当直接创建对象的代价比较大时,可以采用这种模式,用这种方式创建对象是非常高效的,因为无须知道对象创建的细节。

 1 

生活中的例子

如果用过PS软件的人都知道图层的概念,一张图片是一个图层,若想要对这个图层上的内容做修改,我们需要对该图层进行copy,此时修改或者删除图层上的图像并不会影响到原来背景图像的效果。


示例代码:

首先设计一个图层对象, 在图层上画一个"狗"的图案, 并且用[0,0,0,1]作为颜色填充背景色。

输出:

此时已经有了一个原始图像,若想要对该图像进行修改,但是又不想让修改影响到原图,那么就需要再生成一个同样的图层。若用传统方法实现这一需求,需要对类simpleLayer再次实例化,并且传入相关参数;但通过原型模式可以采用复制(clone)的方法来实现。

输出:

注意:

进行clone操作后,新对象的构造函数并没有被二次执行,新对象的内容是从内存里直接拷贝的。原型模式的优势在于,直接拷贝比在内存里直接新建实例会节省资源;同时简化对象创建,避免了构造函数的约束,可以不受构造函数的限制直接复制对象。 在以上代码实例second_one中,可以直接打印出dog,并没有调用second_one.picture="dog"

 2 

结束语

如果本文可以对您的工作学习带来帮助,请扫描左侧赞赏码以资鼓励作者;文章勘误请扫描右侧二维码联系作者。

文章转载自稻壳编程,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论