在很多人的印象里,Python 作为一款动态编程语言,在日常开发中也很少涉及到设计模式 事实上,任何一个编程语言都可以使用设计模式,它可以保证代码的规范性,只是每一种语言的实现方式略有不同而已 今天我们聊聊 Python 面试中,常被问到的 5 种设计模式,它们是:单例模式、工厂模式、构建者模式、代理模式、观察者模式 单例模式,是最简单常用的设计模式,主要目的是保证某一个实例对象只会存在一个,减少资源的消耗 Python 单例模式有很多实现方式,这里推荐下面 2 种 第 1 种,重写 __new__ 方法 定义一个实例变量,在 __new__ 方法中保证这个变量仅仅初始化一次 使用方式如下: 第 2 种,闭包定义装饰器 使用闭包的方式定义一个单例装饰器,将类的定义隐藏到闭包函数中 使用上面装饰器的类,构建的实例都能保证单例存在 使用方式如下: 需要注意的是,上面 2 种方式创建的单例并不适用于多线程 要保证多线程中构建的实例对象为单例,需要在 __new__ 函数中使用 threading.Lock() 加入同步锁 使用的时候,在线程任务中实例化对象,运行线程即可 这样,就保证了多线程创建的实例是单例存在的,不会导致脏数据! 单例模式和工厂模式是日常使用最为频繁的两种设计模式,下篇文章将聊聊后面 3 种设计模式1. 前言
2. 单例模式
cls._instance
(id(instance3))
_singleton
self.arg1 = arg1
(id(instance2))
Singleton._instance
):
t = threading.Thread(target=task, args=[i, ])
t.start()
3. 工厂模式
Orange()
(instance_orange)
XiaoCR_XC()
(maoxw_xc, xiaocr_xc)
4. 最后
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 疫情什么时候才能结束?菜鸟用Python进行预测04/21
- ♥ python安装的包文件在哪个文件夹10/13
- ♥ 如何在python中导入模块09/21
- ♥ 什么是python检查功能09/04
- ♥ python如何退出脚本11/24
- ♥ python如何导入re包10/21
内容反馈