• 单例模式


    什么是单例模式:

    单例模式就是指一个类只能有或者只实例化一个对象,并且以后所有的访问都访问该对象

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    我们可以总结下什么情况下需要单例模式:

    1. 当每个实例都会占用资源,而且实例初始化会影响性能,这个时候就可以考虑使用单例模式,它给我们带来的好处是只有一个实例占用资源,并且只需初始化一次;
    2. 当有同步需要的时候,可以通过一个实例来进行同步控制,比如对某个共享文件(如日志文件)的控制,对计数器的同步控制等,这种情况下由于只有一个实例,所以不用担心同步问题。

    当然所有使用单例模式的前提是我们的确用一个实例就可以搞定要解决的问题,而不需要多个实例,如果每个实例都需要维护自己的状态,这种情况下单例模式肯定是不适用的。作者:geekpy

    链接:http://www.jianshu.com/p/ec6589e02e2f
    來源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    ------------------------------------------------------------------------------------------------------------------------------------------------

    单例模式的优点:
    1、由于单例模式要求在全局内只有一个实例,因而可以节省比较多的内存空间;
    2、全局只有一个接入点,可以更好地进行数据同步控制,避免多重占用;
    3、单例可长驻内存,减少系统开销。
    单例模式的应用举例:
    1、生成全局惟一的序列号;
    2、访问全局复用的惟一资源,如磁盘、总线等;
    3、单个对象占用的资源过多,如数据库等;
    4、系统全局统一管理,如Windows下的Task Manager;
    5、网站计数器。

    一个单例模式
     1 通过重写new方法
     2 class single_instance(object):
     3     __instance=None
     4     def __init__(self):
     5         pass
     6 
     7     def __new__(cls, *args, **kwargs):
     8         if cls.__instance==None:
     9             cls.__instance=object.__new__(cls,*args,**kwargs)
    10         return cls.__instance
    11 
    12 a=single_instance()
    13 b=single_instance()
    14 print(a)
    15 print(b)
    16 输出结果如下:
    17 <__main__.singleton object at 0x0000016D5191D320>
    18 <__main__.singleton object at 0x0000016D5191D320>
    单例

    另外一种不安全的单例模式

    五种单例模式 
  • 相关阅读:
    手机版页面跳转
    设计模式转载(史上最全设计模式导学目录|完整版)
    linux 常用命令
    数据结构与算法JavaScript描述.
    常用算法js版(冒泡排序 ,选择排序 ,插入排序 ,希尔排序 ,归并排序 ,快速排序 ,堆排序 ,计数排序 ,桶排序 ,基数排序)
    伪元素和伪类
    双向数据绑定
    2016年黑马程序员已出品各学科最新学习路线图:
    jQuery插件开发全解析
    蛋白质、碳水化合物和脂肪
  • 原文地址:https://www.cnblogs.com/xiesibo/p/8067655.html
Copyright © 2020-2023  润新知