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

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

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=
所以我这里还是推荐第一种写法。
单例模式是用的最广泛而且最简单的一种单例模式了,使用的时候注意一下,如果你用单例模式构建一个对象去存储一个东西,那么这个对象是不会销毁的,除非你手动释放资源。不然可能会发生内存泄露的事情。!!!!要注意!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 单例模式(SingletonPattern)一般被认为是最简单、最易理解的设计模式,也因为它的简洁易懂,是项目中最...
    成热了阅读 4,298评论 4 34
  • 摘要:设计模式之一:单例模式目录介绍1.单例模式介绍2.单例模式定义3.单例模式使用场景4.单例模式的实现方式 4...
    肆虐的悲傷阅读 476评论 0 2
  • 最后的一抹夕阳 镶嵌在山巅 娇小的蒲公英花 在这个暮春 盛放 一缕缕芳香 躺在 日落的时光上 晾晒 刚刚丰满的自己...
    丽日生辉阅读 294评论 2 5
  • 【原文】子曰:“古者言之不出,耻躬之不逮也。” 【译文】孔子说:“古时候人们不轻易把话说出口,因为他们以说得出而做...
    转念馆阅读 1,112评论 0 1
  • 天渐渐暗下来,我在地上扔了张席子,踹掉鞋躺到上面,四仰八叉,地面的热气透过席子传到身体,知了没完没了的叫,风裹着沙...
    李嘉图_1f27阅读 92评论 0 0