设计模式之单例模式

设计模式(Design Pattern)
是一套被反复使用、多数人知晓的经过分类编目的、代码设计经验的总结

设计模式的目的:
使用设计模式是为了可重用代码、
让代码更容易被他人理解、保证代码可靠性。

设计模式的分类:

创建型模式共5种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
结构型模式共7种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式共11种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

其实还有两类:并发型模式和线程池模式。


image.png

设计模式之单例模式:一山不容二虎/古代皇帝只有一个

有些对象我们只需要一个,比如配置文件、工具类、线程池、綬存、日志对象等;如果创造出多个实例,就会导致许多问题,比如占用过多资源,不一致的结果等

如何保证整个应用中某个实例有且只有一个?
单例模式分为饿汉模式 和 懒汉模式

单例模式 --- 饿汉模式
特点:在加载类时实例化对象。(加载类较慢,但调用较快),非线程安全。
比喻:不管用户有没有调用,只要类加载时,就会实例对象。笨鸟先飞,饿汉才需要去抢夺食物。

class Singleton {
    //1.将构造方法私有化,使外部无法直接创建对象
    private Singleton() {
    }
     
    //2.创建类的唯一实例
    //静态成员为类所有,当类被加载时,该行代码就会被加载执行,
    //创建类的唯一实例无论用户是否调用和获取该实例,均已被加载执行了
   private static Singleton instance = new Singleton();
     
    //3.提供获取实例的方法
    public static Singleton getInstance() {
        return instance;
    }
}

单例模式 --- 饿汉模式
特点:在第一次调用时,实例化对象。加载类时,并没有实例化对象。
(特点加载类较快,调用较慢);线程安全的

class Singleton {
    //1.将构造方法私有化,使外部无法直接创建对象
    private Singleton() {
    }
     
    //2.创建类的唯一实例
    private static Singleton instance;
     
    //3.提供获取实例的方法
    //当用户获取类的实例时,先进行一个判断,
    //若为空,则创建该实例,
    //若不空,则直接返回该实例。 
  public static Singleton getInstance() {
        if(instance==null){
            instance = new Singleton();
        }
        return instance;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前言 本文主要参考 那些年,我们一起写过的“单例模式”。 何为单例模式? 顾名思义,单例模式就是保证一个类仅有一个...
    tandeneck阅读 2,632评论 1 8
  • 一.什么是单例模式 单例模式的定义:确保一个类只有一个实例,并提供一个访问他的全局访问点。单例模式是几个设计模式中...
    Geeks_Liu阅读 2,332评论 0 10
  • 最近学习了Java的几种常规的设计模式,内容较多,思维方式多种多样,故将所学整理一下,写成博客,分享并加深自己的理...
    Airing阅读 910评论 1 10
  • 单例设计模式全解析 在学习设计模式时,单例设计模式应该是学习的第一个设计模式,单例设计模式也是“公认”最简单的设计...
    WekingZhang阅读 411评论 0 1
  • 1 单例模式的定义 定义:确保某一个类只有一个实例,自行实例化并且向整个系统提供这个实例。单例模式的通用类图如下所...
    Jerry_1116阅读 903评论 0 0

友情链接更多精彩内容