3.单例模式-饿汉式-静态代码块

2019-11-17  本文已影响0人  测试员

步骤

1)单利模式 防止其他类中new,所以private修饰
2)类中创建对象----但是要在静态代码块中创建
3)对外提供一个静态方法来创建对象

优点

写法比较简单,就是在类装载的时候就完成实例化。
避免了线程同 步问题。

缺点

在类装载的时候就完成实例化,没有达到懒加载(Lazy Loading)的效果。如果从始 至终从未使用过这个实例,则会造成内存的浪费。【小公司无所谓,服务器空间足够,同事水平参差,这样看方便理解,一般情况下,可维护性第一,性能第二】

代码实现

(蛇精病啊,学完之后发现一样,花里胡哨的没啥用)

package yuan.com.dp.singleton;

/**
 * 测试类
 */
class Test_SingleTon_2 {
    public static void main(String[] args) {
        SingleTon_2 ton_1 = SingleTon_2.getSingleTon_2();
        SingleTon_2 ton_2 = SingleTon_2.getSingleTon_2();
        System.out.println(ton_1 == ton_2);
    }
}


public class SingleTon_2 {
    /**
     * 1.单利模式 防止其他类中new,所以private修饰
     */
    private SingleTon_2() {
    }

    /**
     * 2.类中创建对象----但是要在静态代码块中创建
     * 这里要说一下final,作用是不允许被修改变量的值,能修改值的时机是静态代码块以及有参构造加载时。
     *
     */
    private static final SingleTon_2 singleTon_2;

    static {
        singleTon_2 = new SingleTon_2();

    }

    /**
     * 3.对外提供一个静态方法来创建对象
     *
     * @return singleTon_2实例
     */
    public static SingleTon_2 getSingleTon_2() {
        return singleTon_2;
    }
}

上一篇下一篇

猜你喜欢

热点阅读