单例

所谓单例设计模式,即时采取一定的方法保证在整个软件系统当中,对于某个类只能存在一个对象实例,并且该类只提供一个其对象实例的方法(静态方法)

恶汉式

优缺点说明:

  1. 优点:这种写法比较简单,就是在类装载的时候就完成实例化.避免了线程同步问题

  2. 缺点: 在类装载的时候就完成了实例化,没有达到Lazy Loading的效果.如果从始至终都没有使用过这个实例,就会造成内存的浪费

  3. 这种方式基于ClassLoader机制避免了多线程同步问题,不过,instance在类装载的时就实例化,在单例模式中大多数都是调用getInstance方法,但是导致类装载的原因有很多种,因此不能确定有其他方式(或者其他静态方法)导致这个类被装载,这时候初始化instance就没有达到lazy loading的效果

  4. 结论: 这种单例模式可用,可能 造成内存浪费

代码演示

package com.atguigu.principle.singleton.type1;

/**
 */
public class SingletonTest01 {

    // 1. 构造器私有化,外部不可以new
    private SingletonTest01() {

    }

    // 2. 本类内部创建对象实例
    // 恶汉破不及待 new 这个 对象
    private final static SingletonTest01 instance = new SingletonTest01();

    // 3. 提供一个工友的静态方法,返回实例对象
    public static SingletonTest01 getInstance() {
        return instance;
    }
}


results matching ""

    No results matching ""