09 singleton单例模式(创建型)

版权声明:就是开个版权玩一下 https://blog.csdn.net/qq_41997479/article/details/86622152

09 singleton(创建型)

    • 为什么我们需要独一无二的对象?
      • 线程池
      • 打印机
      • Caches
      • 注册表
      • 比如太阳、月亮
    • 单例模式:一个类只能被实例化一次
    • 什么时候用:
      • 一个类必须只有一个实例,并且它必须能够从一个众所周知的接入点对客户端进行访问。
      • 当唯一的实例应该通过子类化来扩展时,客户端应该能够在不修改其代码的情况下使用扩展实例。
    • 好处:
      • 对唯一实例的受控访问。
      • 允许实例数量可变。该模式使允许单例类的多个实例变得容易。您可以使用相同的方法来控制应用程序使用的实例数量。
      • 比静态类(具有所有静态属性和方法的类)更灵活。
        • 静态类必须是无状态的;单例可能是有状态的
    • 实现:
      • 使用静态static方法允许客户机获得对单个实例的引用。
      • 使用私有private构造函数。
      • Eager singleton:(private static)
        • 有可能不要单例的话,他自己创建就浪费了
      • Lazy singleton:

 

    • 当单例被创建后,每次获得单例仍需要同步,效率低
    • 标准解答:
      • 保证第一次创建时用synchronized,而后就不用同步了

 

猜你喜欢

转载自blog.csdn.net/qq_41997479/article/details/86622152