• 大战设计模式【7】—— 单例模式


    单例模式(Singleton)

     

    设计模式使用的例子https://github.com/LinkinStars/DesignPatternsAllExample

     

    一、定义

    确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。
    单例模式是一种对象创建模式。



    二、结构

    Singleton(单例);



     

    三、优点

    提供了对唯一实例的受控访问。单例类封装了它的唯一实例,所以它可以严格控制客户怎样以及何时访问它。
    由于在系统内存中只存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销毁的对象,单例模式无疑可以提高系统的性能。
    允许可变数目的示例。基于单例模式,开发人员可以进行扩展,使用与控制单例对象相似的方法来获得指定个数的实例对象,既节省系统资源,又解决了单例对象共享过多有损性能的问题。



     

    四、缺点

    单例模式中没有抽象层,因此单例类的扩展有很大的困难。
    单例类的职责过重,在一定程度上违背了单一职责的原则。



     

    五、应用场景

    系统只需要一个实例对象。例如:系统要求提供一个唯一的序列号生成器或者资源管理器,又或者需要考虑资源消耗太大而只允许创建一个对象。
    客户调用类的单个实例只允许使用一个公共访问点,除了该公共访问点,不能通过其他途径访问该实例。



    六、个人总结

    1、单例模式应用场景非常的多,对它最直接简单的描述就是:全局唯一。
    2、单例模式要保证的点:
    无论是多少个线程还是多少人访问,获得的对象都是同一个。
    同时必须考虑性能和存储
    3、实现单例模式的基本步骤
    私有化变量
    私有化构造方法
    提供公开的获取变量的方法
    4、实现单例模式的代码有很多种,这里举例最常见的三种,也就是例子中描述的三种
    饿汉式(eager):直接静态初始化变量,适用于访问量平凡(饥饿)
    懒加载(lazyLoad):获取对象时才初始化对象,并且用同步约束获取对象的方法,适用于访问量很少但是需要使用单例的情况
    双重检查加锁(double-checked locking):只有第一次才进行同步检查,大大减少了getInstance的时间


     
    参考博客:http://www.cnblogs.com/edisonchou/p/6618503.html
  • 相关阅读:
    jQuery基础
    Jquery正则表达式公式.例子
    jquery对象与js对象的相互转换
    windows用命令结束进程
    禅道 bug指向为数字问题解决过程
    delphi 触摸 手势
    二维码
    PowerDesigner 生成的脚本取掉双引号
    oracle执行sql文件
    fireDAC oracle
  • 原文地址:https://www.cnblogs.com/linkstar/p/7686957.html
Copyright © 2020-2023  润新知