zoukankan      html  css  js  c++  java
  • 设计模式之单例模式

    1、单例的实现

    /**
     * 恶汉
     * @author haokui
     *
     */
    class Single_villian {
        private Single_villian() {
            
        }
        private static Single_villian s = new Single_villian();
        public  static  Single_villian getSingle() {
            return s;
        }
    }
    /**
     * 懒汉
     * @author haokui
     *
     */
    class Single_lazy {
        private Single_lazy() {
            
        }
        private static Single_lazy s = null;
        public  static synchronized Single_lazy getSingle() {
            if (s == null) {
                return new Single_lazy();
            }
            return s;
        }
    }
    /**
     * 使用内部类来更好的实现单例模式
     * @author haokui
     *
     */
    class Single_internal {
        private Single_internal() {
        }
        public  static  Single_internal getSingle() {
                return Internal.s;
        }
        private static class Internal {
            public  static  Single_internal s = new Single_internal();
        }
    }

    第一种方式恶汉,饿汉式在类创建的同时就实例化一个静态对象出来,不管之后会不会使用这个单例,都会占据一定的内存,但是相应的,在第一次调用时速度也会更快,因为其资源已经初始化完成。

    第二种懒汉。性能比较低,为了线程安全加了同步关键字。

    第三种采用静态内部的方式来实现。外部类被加载的时候,内部类不会被加载,只有在调用内部类的静态方法或者属性的时候才会被加载,这样正好能保证只产生一个实例,而且不存在线程安全的问题。

  • 相关阅读:
    solr不是标准的java project解决方案
    solr 索引库的维护
    solr linux配置
    JSON跨域问题总结
    阿里云字体图标的引用
    Android 体系结构
    java.lang.NoClassDefFoundError 异常
    java java.uitl.Random产生随机数
    Android 应用间的集成
    iOS7状态栏字体颜色修改
  • 原文地址:https://www.cnblogs.com/hkdpp/p/9072224.html
Copyright © 2011-2022 走看看