python设计模式1-单例模式

 2023-09-15 阅读 21 评论 0

摘要:1. 单例模式(Singleton)介绍 UML类图 单例模式的优点 在内存中只有一个对象,节省内存空间。避免频繁的创建销毁对象,可以提高性能。避免对共享资源的多重占用。可以全局访问。 适用场景 由于单例模式的以上优点,所以是编程中用的比较多的一种设计模式。我

1. 单例模式(Singleton)介绍

UML类图

在这里插入图片描述

单例模式的优点

  • 在内存中只有一个对象,节省内存空间。
  • 避免频繁的创建销毁对象,可以提高性能。
  • 避免对共享资源的多重占用。
  • 可以全局访问。

适用场景

由于单例模式的以上优点,所以是编程中用的比较多的一种设计模式。我总结了一下我所知道的适合使用单例模式的场景:

  • 需要频繁实例化然后销毁的对象。
  • 创建对象时耗时过多或者耗资源过多,但又经常用到的对象。
  • 有状态的工具类对象。
  • 频繁访问数据库或文件的对象。
  • 以及其他我没用过的所有要求只有一个对象的场景。

2. 示例

多线程使用单例使用共享资源时,注意线程安全问题。

'''Singleton Pattern with Python Code
'''import threadingclass Singleton(object):_instance_lock = threading.Lock()def __init__(self):pass@classmethoddef getInstance(cls, *args, **kwargs):if not hasattr(Singleton, "_instance"):# 线程安全with Singleton._instance_lock:if not hasattr(Singleton, "_instance"):Singleton._instance = Singleton(*args, **kwargs)return Singleton._instanceclass Client(object):def main(self):obj = Singleton.getInstance()print(obj)obj = Singleton.getInstance()print(obj)if __name__ == '__main__':Client().main()

python类的调用?输出:

# ./SingletonType.py
<__main__.Singleton object at 0x0000022D98615370>
<__main__.Singleton object at 0x0000022D98615370>

参考:
https://wiki.jikexueyuan.com/project/java-design-pattern/singleton-pattern.html
https://www.cnblogs.com/huchong/p/8244279.html
https://zhuanlan.zhihu.com/p/37534850

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/61044.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息