美文网首页
3.单例模式-饿汉式-静态代码块

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

作者: 测试员 | 来源:发表于2019-11-17 21:50 被阅读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;
        }
    }
    
    

    相关文章

      网友评论

          本文标题:3.单例模式-饿汉式-静态代码块

          本文链接:https://www.haomeiwen.com/subject/ixymictx.html