实现方式分为3步骤:

1.构造方法私有化

2.类的内部创建对象

3.向外部暴露一个静态的公共方法

实例:

package singlePattern;public class SinglePattern1 {//类的内部创建对象private static final SinglePattern1 singlePattern1 = new SinglePattern1();//构造方法私有化private SinglePattern1(){}//向外暴露一个静态的公共方法public static SinglePattern1 getInstance(){return singlePattern1;}}

4.优劣点:

1)优点:这种方法比较简单,就是在类装载的时候就完成实例化,避免了线程同步问题。

2)缺点:在类装载的时候就完成实例化,没有达到Lazy Loading的效果。如果从始至终从未使用过这个实例,则会造成内存的浪费。

3)这种方式基于classloader机制避免了多线程的同步问题,不过,instance在类装载的时候就实例化,在单例模式中大多数都是调用getInstance方法,但是导致类装载的原因有很多种,因此不能确定有其他的方式(或者其他的静态方法)导致类装载,这时候初始化instance就没有达到lazy loading的效果

4)结论:这种单例模式可用,可能造成内存浪费

设计模式之单例模式8种实现方式,其一:饿汉式-静态常量饿汉式相关推荐

  1. 设计模式之单例模式8种实现方式,其五:懒汉式(线程不安全,同步代码块)

    实现方式: 1.构造方法私有化 2.创建类的静态变量,不实例化 3.向外部暴露一个静态的公共方法,并判断是否存在实例,如果不存在,则实例化 4.在公共方法的内部生成实例的代码块加上synchroniz ...

  2. 设计模式之单例模式8种实现方式,其八:枚举方式

    实现方式: package singlePattern;enum Singleton{INSTANCE;public void method(){} } 优缺点说明: 1.这借助JDK1.5中添加的枚 ...

  3. 设计模式之单例模式8种实现方式,其六:双重检查

    实现方式: 1.构造方法私有化 2.创建类的静态变量,不实例化,给该静态变量添加volatile关键字,设定instance为共享变量 3.向外部暴露一个静态的公共方法,并判断是否存在实例,如果不存在 ...

  4. 设计模式之单例模式8种实现方式,其七:静态内部类

    实现方式: 1.构造方法私有化 2.创建静态内部类 3.在静态内部类里面创建外面类的final修饰的实例 4.通过静态共有方法去返回创建的实例 代码如下: package singlePattern; ...

  5. 设计模式之单例模式8种实现方式,其四:懒汉式(线程安全,同步方法)

    实现方式: 1.构造方法私有化 2.创建类的静态变量,不实例化 3.向外部暴露一个静态的公共方法,并判断是否存在实例,如果不存在,则实例化 4.在外部暴露的公共方法上添加synchronized关键字 ...

  6. 设计模式之单例模式8种实现方式,其三:懒汉式(线程不安全)

    实现方式: 1.构造方法私有化 2.创建类的静态变量,不实例化 3.向外部暴露一个静态的公共方法,并判断是否存在实例,如果不存在,则实例化 案例: package singlePattern;publ ...

  7. 设计模式之单例模式8种实现方式,其二:饿汉式-静态代码块饿汉式

    饿汉式(静态代码块)应用步骤: 1.构造器私有化 2.创建类的静态变量,不实例化 3.静态代码块实例化 4.向外部暴露一个静态的公共方法 案例: package singlePattern;publi ...

  8. 单例设计模式介绍||单例设计模式八种方式——1) 饿汉式(静态常量) 2) 饿汉式(静态代码块) 3) 懒汉式(线程不安全) 4) 懒汉式(线程安全,同步方法)

    单例模式 单例设计模式介绍 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法). 比如Hibernate的 ...

  9. java设计模式之单例模式(七种方法)

    单例模式:个人认为这个是最简单的一种设计模式,而且也是在我们开发中最常用的一个设计模式. 单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个 ...

最新文章

  1. C语言 · 身份证号码升级
  2. eeglab中文教程系列(8)-选择数据的epochs并进行比较
  3. JZOJ 1533. 郁闷的gxg
  4. java代码里的JSON格式怎么写好看_谁会不爱让代码骚里骚气的VSCode扩展插件呢?...
  5. java mvc 获取session_Spring MVC----获取session/request
  6. Python 日期 的 加减 等 操作
  7. 怎样快速画出一个正方体_图形与几何---正方体
  8. 编程体系结构(07):JavaEE之Web开发
  9. python 字符串去重且相同字符最多出现2次_【Python】获取字符串中出现次数最多/少的字符...
  10. Mybatis(12)事务原理和自动提交设置
  11. 【技术】一份完全解读:是什么使神经网络变成图神经网络?
  12. mysql syncmasterinfo_sync_master_info的一些说明
  13. javascript事件机制
  14. plsql本机不安装数据库连接远程数据库
  15. linux phpredisAdmin安装步骤
  16. 计算机桌面工具栏出现闪烁,电脑任务栏图标一直闪动怎么解决
  17. 丹佛机场行李系统案例分析
  18. 22年字节跳动飞书人力套件二面面经
  19. 仿真软件proteus构建流水灯实验
  20. 决策树与随机森林Adaboost算法

热门文章

  1. android自定义省略号,Android开发自定义TextView省略号样式的方法
  2. php windows 网络流量,PHP系统流量分析的程序
  3. 安卓最好的浏览器_Wow!来自印度的操作系统,Prime OS X86安卓体验
  4. 2019云计算战局前瞻:百度云要啃“硬骨头”
  5. Java基础学习总结(92)——Java编码规范之排版、注释及命名
  6. Java基础学习总结(56)——学Java必知十大学习目标
  7. html的设置语言为en,CSS中的html [lang =“ en”]和html:lang(en)有什么区别?
  8. JavaScript高级程序设计学习(二)之基本概念
  9. 人民币金额小写转大写
  10. 云浮市云计算大数据中心预计明年6月建成