首页 > 编程语言 >【JAVA】设计模式之懒汉式与恶汉式的单例模式实现的方法与详解

【JAVA】设计模式之懒汉式与恶汉式的单例模式实现的方法与详解

时间:2022-11-02 12:02:21浏览次数:60  
标签:Singleton JAVA 私有 恶汉 instance 实例 static 设计模式 com


作者:程序员小冰,GitHub主页:​​https://github.com/QQ986945193​​​
新浪微博:​​​http://weibo.com/mcxiaobing​

长期维护的Android项目,里面包括常用功能实现,以及知识点详解,
当然还有Java中的知识点。具体请看github:

https://github.com/QQ986945193/DavidAndroidProjectTools

好了,说正题
代码比较简单,非常基础,不过用处挺多的,针对做java或者android开发的小伙伴。
直接上代码吧,带有注释很详细:

package davidandroidprojecttools.qq986945193.com.davidandroidprojecttools.javaUtils;

/**
* @author :程序员小冰
* @新浪微博 :http://weibo.com/mcxiaobing
* @GitHub: https://github.com/QQ986945193
* @交流Qq :986945193
* 类名:java中单例设计模式 恶汉式和懒汉式实现方法
*/
public class Singleton {
//
// /**
// * 恶汉式 加载类的时候比较慢,运行比较快
// */
//
// private static Singleton instance = new Singleton();
//
// /**
// * 1,定义私有的构造方法,禁止外部直接创建实例
// * <p/>
// * 2,内部自己创建好实例,私有属性(不建议在外部直接调用我们的成员变量)
// * <p/>
// * 3,创建一个方法,使外部可以得到此实例
// */
// private Singleton() {
//
// }
//
//
// public static Singleton getSingletonInstance() {
// return instance;
// }


/**
* 懒汉式 加载类的时候比较快,运行时比较慢
* <p/>
* 1,创建私有构造方法,禁止外部直接创建实例
* <p/>
* 2,创建私有变量实例化对象,私有属性(不建议在外部直接调用我们的成员变量)
* <p/>
* 3,创建方法,使外部可以调用我们的私有对象实例
*/

private static Singleton instance = null;

private Singleton() {

}

/**
* 这样也是可以的,不过,如果涉及到多线程,最好加上一个同步锁(synchronized),可以
* <p/>
* 直接在方法上添加 但是每次都要去进行同步,显然不是最好的。
*
* 最好的当然是下面的,在方法中进行加上synchronized
* @return
*/
public static Singleton getInstance() {

if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {

instance = new Singleton();
}
}
}
return instance;
}


// public static synchronized Singleton getInstance() {
// if (instance == null) {
// instance = new Singleton();
// }
// return instance;
// }


}


标签:Singleton,JAVA,私有,恶汉,instance,实例,static,设计模式,com
From: https://blog.51cto.com/mcxiaobing/5816165

相关文章

  • 【JAVA】java中实现map集合的数据存取详解三种方法。Android程序员也是要会写的
    作者:程序员小冰,GitHub主页:​​https://github.com/QQ986945193​​​新浪微博:​​​http://weibo.com/mcxiaobing​​长期维护的Android项目,里面包括常用功能实现,以及知......
  • MySQL常用指令,java,php程序员,数据库工程师必备。程序员小冰常用资料整理...
    MySQL常用指令,java,php程序员,数据库工程师必备。程序员小冰常用资料整理MySQL常用指令(备查)最常用的显示命令:1、显示数据库列表。showdatabases;2、显示库中的数据表:use......
  • java获取当月日期和当月周末
    根据年月,获取当月所有日期publicstaticvoidmain(String[]args){System.err.println(getMonthDate("2022-07"));}publicstaticListgetMont......
  • JavaScript中的Object.keys的详解和用法
    目的:在实际开发中,我们有时需要知道对象的所有属性。解决办法:ES5引入了Object.keys方法,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键名。参考:https://......
  • Java了解
    三大版本-WriteOnce、RunAnywhere-JavaSE:标准版(桌面程序、控制台开发。。。)-JavaME:嵌入式开发(手机、小家电。。。)-JavaEE:E企业级开发(web端,服务器开发。。。) JDK、......
  • 设计模式之创建型模式
    目录一、工厂模式1.1简单工厂模式1.2工厂方法模式1.3抽象工厂方法。二、单例模式2.1.饿汉式2.2.懒汉式2.3双重检索懒汉式的线程安全2.4静态内部类懒汉式单例的线程安......
  • Javascript 异常处理的一些经验
      写在前面 为了提升应用稳定性,我们对前端项目开展了脚本异常治理的工作,对生产上报的jserror进行了整体排查,试图通过降低脚本异常的发生频次来提升相关告警的准确......
  • 过滤器设计模式
    过滤器设计模式:按照指定的顺序进行过滤,由一个过滤器链接口,一个起切换作用的过滤器链接口实现类,若干个过滤器链接口实现类,一个过滤器链适配器类组成。过滤器链接口:packag......
  • Java多线程(7):JUC(下)
    您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~ 除了四种常见的同步器(发令枪、摇号器、栅栏和交换机),JUC还有所谓线程安全的容器、阻塞队列和一些特殊的类。其中常出现的......
  • Javascript进阶笔记 - BOM
    6.BOM目录6.BOM1.BOM简介2.History3.Location4.定时器1.BOM简介BOM是指游览器对象模型,BOM提供了一组对象,方便用户通过JS操作游览器BOM对象Window代表......