单例模式学习笔记

单例模式确保一个类只有一个实例,而且自行实例化,向整个系统提供这个实例。它的三个特点:

    A.只能有一个实例;

    B.它必须自行创建这个实例;

    C.它必须自行向整个系统提供这个实例。

单例模式分为饿汉单例模式和懒汉单例模式,它们的类图如下:

类图结构

饿汉模式类图

 

      类图结构

懒汉模式类图

饿汉单例类与懒汉单例类的区别:

    A.饿汉单例类在自己被加载时就将自己实例化,而懒汉单例类是在被调用时再实例化。

    B.饿汉单例类对资源的利用率较懒汉单例类要低。

    C.饿汉单例类在速度和响应时间较懒汉单例类要快。

使用单例模式的条件:在一个系统要求一个类只有一个实例是才应该用单例模式。

 

注意事项:

    1.在分散式系统中,单例类不一定只有一个实例,所以在分散式系统中尽量不要使用有状态单例模式;

    2.工厂模式与建造者模式可常与单例模式配合使用;

    3.不完全单例类不推荐使用;

    4.单例类与静态全局变量的优势在于:可以有较复杂的内部逻辑,可以有继承关系等;

    5.属性管理器经常可以用单例模式来实现。

          

    参考文献:《Java与模式》,阎宏,第十五章.

<!--EndFragment-->

你可能感兴趣的:(java,设计模式)