Android知识Java学习笔记Android技术知识

Java 设计模式 (不定期更新)----单例模式

2017-08-24  本文已影响35人  夏沐尧

网上关于单例模式的讲解铺天盖地,而这个设计模式在开发中用的频率也比较频繁,所以说说这个。
单例模式,顾名思义,通过这个模式构建出的对象在整个项目的运行中有并且只有只一个,且对象不变。具体怎么做呢

public class Appcontext {

    //在创建最初就new一次,仅仅一次
    private static final Appcontext appcontext = new Appcontext();

    //私有方法,不让外部去访问
    private Appcontext() {
    }

    //通过这个方法去返回给调用者唯一对象
    public static Appcontext getAppcontext() {
        return appcontext;
    }

}

这种写法被称之为饿汉模式,既然有饿汉模式就有懒汉模式

public class Appcontext {

    //在创建最初就new一次,仅仅一次
    private static Appcontext appcontext = new Appcontext();

    //私有方法,不让外部去访问
    private Appcontext() {
    }

    //通过这个方法去返回给调用者唯一对象
    public static Appcontext getAppcontext() {
        if (appcontext == null) {
            appcontext = new Appcontext();
        }
        return appcontext;
    }
}

这就是饿汉模式,但是缺有线程不安全的情况发生,比如线程A运行到了

appcontext = new Appcontext();
刚刚进入,但是还没有new

线程B执行到了

if (appcontext == null) {

此时appcontext确实是==null的,然后2秒(随便说的2秒)过后,你的项目就存在了2个对象。刺激吧=w=
所以我这里还是推荐第一种写法。
单例模式是用的最广泛而且最简单的一种单例模式了,使用的时候注意一下,如果你用单例模式构建一个对象去存储一个东西,那么这个对象是不会销毁的,除非你手动释放资源。不然可能会发生内存泄露的事情。!!!!要注意!!!

上一篇下一篇

猜你喜欢

热点阅读