单例设计模式

来源:互联网 发布:access数据库百度云 编辑:程序博客网 时间:2024/06/06 17:32

单例模式可以说是设计模式中最简单的了,而且使用次数比较频繁,很常见了,那接下来就来练习的写一下单例模式..


--饿汉式

public class Singleton {private static Singleton singleton = new Singleton();    public static Singleton getIntence() {        return singleton;    }}
就是类加载就初始化了

--懒汉式

public class Singleton02 {private static Singleton02 intence;    private static Singleton02 getIntence() {        if (intence == null) {            synchronized (Singleton02.class) {                if (intence == null) {                    intence = new Singleton02();                }            }        }        return intence;    }}

加了双重锁判断

第一个判空是为了避免不必要的同步,第二层判断是为了在null 情况下创建实例

1.给Singleton02 分配内存

2.调用Singleton02 的构造函数,初始化成员字段

3.将instance 对象指向分配的内存空间(此时instance 就不是null 了)

--枚举

public void singleton03{INTANCE;private void doSome(){Log.e("TAG","INTANCE");}}
它在任何情况下都是单例的,也是最简单的


--内部类的单例实现

public class SingletonInner {        /**      * 内部类实现单例模式      * 延迟加载,减少内存开销      *       */      private static class SingletonHolder {          private static SingletonInner instance = new SingletonInner();      }        /**      * 私有的构造函数      */      private SingletonInner() {        }        public static SingletonInner getInstance() {          return SingletonHolder.instance;      }        protected void method() {          System.out.println("SingletonInner");      }  }

以上4种写法都保证了线程的安全 ,第一种饿汉式是在类加载就是初始化,其他的三种不会..好了..就这个多..主要方便自己学习..88..


参考文章来自大神 鸿洋http://blog.csdn.net/lmj623565791/article/details/24468641



















原创粉丝点击