单例模式

Posted 小仙女~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单例模式相关的知识,希望对你有一定的参考价值。

单例模式

  • https://www.cnblogs.com/restartyang/articles/7770856.html
  • 定义:保证一个类只有一个实例,并提供一个访问它的全局访问点
  • 适用场景:
    1. 当一个类只有一个实例而客户可以从一个众所周知的访问点访问它时
    2. 频繁访问数据库或文件的对象。
    3. 需要频繁实例化然后销毁的对象。
    4. 创建对象时耗时过多或者耗资源过多,但又经常用到的对象。
    5. 有状态的工具类对象。
    6. 频繁访问数据库或文件的对象。
  • 经典使用场景:
    • 资源共享的情况下,避免由于资源操作时导致的性能或损耗等。如上述中的日志文件,应用配置。
    • 控制资源的情况下,方便资源之间的互相通信。如线程池等。
  • 优点:对唯一实例的受控访问,相当于全局变量,但是又可以防止此变量被串改
class Baby(object):
    __san=None     #相当于一个空间名 (全局访问点)
    def __new__(cls, *args, **kwargs):
        if Baby.__san is None:
             Baby.__san = super().__new__(cls)
        return Baby.__san
    def __init__(self,cloth,pants):
        self.cloth=cloth
        self.pants=pants

a=Baby(\'红毛衣\',\'绿皮裤\')
b=Baby(\'白衬衫\',\'黑裤子\')
print(a.cloth)
print(b.cloth)
# 白衬衫
#白衬衫

以上是关于单例模式的主要内容,如果未能解决你的问题,请参考以下文章

常用代码片段

性能比较好的单例写法

片段作为 Android 中的单例

单例片段或保存网页视图状态

你熟悉的设计模式都有哪些?写出单例模式的实现代码

单例模式以及静态代码块