单例模式的定义:

保证一个类仅有一个实例,并提供一个访问它的全局访问点。
demo:下面使用单例模式写一个简单的读取配置文件的对象。

AppConfig:读取应用配置文件
test.properties:配置文件
Client:服务端

@Data
@Builder
@AllArgsConstructor
@Slf4j
@Component
public class AppConfig implements Serializable {// 饿汉/*** 定义一个变量来存储创建好的类实例,直接在这里创建类实例*/private static AppConfig instance = new AppConfig();/*** 创建一个方法来为客户端提供类的实例* @return*/public static AppConfig getInstance(){return instance;}// 懒汉
//    /**
//     * 定义一个变量来存储创建好的类实例,直接在这里创建类实例
//     */
//    private static AppConfig instance = null;
//
//    /**
//     * 创建一个方法来为客户端提供类的实例
//     * @return
//     */
//    public static AppConfig getInstance(){//        if(instance == null){//            instance = new AppConfig();
//        }
//        return instance;
//    }private String parameterA;private String parameterB;public AppConfig() {readConfig();}private void readConfig() {Properties p = new Properties();InputStream in = null;try {in = AppConfig.class.getResourceAsStream("/test.properties");p.load(in);this.parameterA = p.getProperty("parameterA");this.parameterB = p.getProperty("parameterB");} catch (Exception e) {log.error("readConfig. Exception:", e);} finally {try {in.close();} catch (Exception e){log.error("readConfig. finally Exception:", e);}}}
}
parameterA = 123
parameterB = 2222
public class Client {public static void main(String[] args) {AppConfig appConfig = AppConfig.getInstance();System.out.println(appConfig.getParameterA());System.out.println(appConfig.getParameterB());}
}

懒汉和饿汉的区别:

1、时间和空间:
懒汉是时间换空间,也就是每次加载的时候,去判断是否已经创建,相比之下多了判断的时间,但是如果没有加载,则节省空间。
2、线程安全:
不加同步的懒汉模式是线程不安全的,饿汉时线程安全的,因为虚拟机只会装在一次。

单例模式的本质:

控制实例的数量

何时选用单例模式:

当需要控制一个类的实例只能有一个,而且客户只能从一个全局访问点访问它时,可以选用单例模式。

研磨设计模式--单例模式相关推荐

  1. 设计模式 -- 单例模式(Singleton)

    写在前面的话:读书破万卷,编码如有神 -------------------------------------------------------------------- 主要内容包括: 初始单例 ...

  2. Python设计模式-单例模式

    Python设计模式-单例模式 基于Python3.5.2,代码如下 #coding:utf-8 import threading import timeclass Singleton(object) ...

  3. 研磨设计模式之 策略模式--转

    http://www.uml.org.cn/sjms/201009092.asp 研磨设计模式之 策略模式   2010-09-09 作者:云飞龙行 来源:云飞龙行的blog   先感谢众多朋友的支持 ...

  4. Android设计模式——单例模式(Singleton)

    二十三种设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元 ...

  5. 【学习笔记】ABAP OOD设计模式 - 单例模式

    ABAP OOD设计模式 - 单例模式 整理转自-<SAP ABAP 面向对象程序设计(原则.模式及实践)> 单例模式(Singleton Pattern)是常用的且较为简单的软件设计模式 ...

  6. Go 语言实现 23 种设计模式 单例模式

    Go 语言实现 23 种设计模式 单例模式 单例模式 单例模式是一种常用的软件设计模式,在使用过程中,单例对象的类只有一个实例.使用单例模式,1 可以节省内存等资源,例如windows操作系统的资源管 ...

  7. java观察者模式本质_6.[研磨设计模式笔记]观察者模式

    1.定义 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新. 2.解决问题 --订阅报纸 看起来订阅者是直接根有据打交道,但实际上,订阅者的订阅数据 ...

  8. 工厂模式 java场景_研磨设计模式之简单工厂模式(场景问题)

    简单工厂不是一个标准的设计模式,但是它实在是太常用了,简单而又神奇,所以还是需要好好掌握的,就当是对学习设计模式的热身运动吧.为了保持一致性,我们尽量按照学习其它模式的步骤来进行学习. 1  场景问题 ...

  9. java singleton inner class_Java面向对象设计模式-单例模式

    Java面向对象设计模式-单例模式 2020-05-28 589 0 单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点,有多重实现方式. 一.饿汉式单例模式,构造方法私有化,在加载类Sin ...

  10. Java开发中常用的设计模式-单例模式

    单例(Singleton)模式的定义:指一个类只有一个实例,且该类能自行创建这个实例的一种模式. Java开发中常用的设计模式-单例模式 单例模式有3个特点: 单例类只有一个实例对象: 该单例对象必须 ...

最新文章

  1. Linux kernel 不输出log信息
  2. Oozie使用java启动外部包
  3. node更新到最新版本_云顶之弈10.24版本临时更新永恩、劫大砍,最新上分阵容推荐...
  4. 用Python学分析 - 单因素方差分析
  5. cocos2d-x初探学习笔记(10)--运动中的加速度效果
  6. python子进程关闭fd_python – 捕获崩溃的子进程的“分段错误”...
  7. java虚引用_深入了解JAVA 虚引用
  8. WEB消息提醒实现之一 背景
  9. Linux SSH免密码登录
  10. 蓝桥杯嵌入式板-解决LCD使LED亮灭混乱的办法
  11. 汽车电工及电子技术基础【3】
  12. TCP/IP协议 1 ----实验楼转
  13. 微信小程序个人/企业开放服务类目一览表
  14. 手机计算机国二支付,“刷手机”时代悄然来临 手机支付呼唤国家标准(二)...
  15. 微秒, 纳秒,毫秒, 时间单位换算[转]
  16. 眼睛血管分割matlab版本
  17. 微信加密某一个人私聊?微信私密聊天
  18. PyCharm 创建纯Python项目
  19. robotstudio试用期延长总结
  20. 【转载】深入浅出的讲解傅里叶变换

热门文章

  1. Highlighting System5 最新高亮系统
  2. Kepserver如何连接InTouch
  3. testbench文件显示波形_如何编写testbench的总结(非常实用的总结)
  4. Maple 教程 何青,科学出版社
  5. SSH学习2_ssh登陆卡住(expecting SSH2_MSG_KEX_ECDH_REPLY)
  6. windows搭建FTP
  7. 游戏编程入门步骤,想不到吧.
  8. Ubuntu 定时锁屏3.0
  9. 极点五笔常用操作及快捷键功能描述(v6.5)
  10. l360清零软件无响应_爱普生Epson L360 清零软件