嗯~答案找到了 这个安全性是相对说的,如果就本页面打的那几个代码并不能说就达到了安全性。如果加一些其他修饰规范代码的前提下才可以说那样做起到了安全性 。 解释的网站是https://blog.csdn.net/fututadeyoushang/article/details/80941537
相等的判断语句是什么?
您需要理解以下两段代码的区别:
//代码1 Singleton s1 = new Singleton(); Singleton s2 = new Singleton(); //代码2 Singleton s1 = Singleton.instance; Singleton s2 = Singleton.instance;
在代码1中,在没有实现“单例模式”的情况下,是实实在在的分别创建了两个对象s1和s2。所有这里的s1和s2肯定是不同的。
而已经实现了“单例模式”之后,唯一的对象instance在Singleton类中已经创建。在代码2中,没有创建任何新的对象,s1和s2都只是引用了Singleton中的instance而已。所有这里的s1和s2肯定是相同的。
希望我的回答能给你帮助。如果您还有任何疑惑,可以私信我。
望采纳,谢谢您。
用static修饰的变量,会在应用启动的时候就会加载出来。所以叫做饿汉模式,不管之后会不会用到这个实例,它都已经是创建出来了的。
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。即一个类只有一个对象实例
先打main 然后Alt+/ 就ok了
工作总结出来的
计模式,就是在实际开发工作中,总结出来的很多种解决不同种类问题的方案。
正确的方法应该是把instance属性设置成private私有 通过对外的接口/方法来获取成员属性 创建唯一实例
//这句话在Singleton类加载的时候就执行了,内存空间中已经有一份instance了。 private static Singleton instance = new Singleton(); //提供方法获取instance。因为前面是private修饰的,所以不能直接访问,只能提供一个方法访问。 public static Singleton getInstance(){ return instance; }
所以并没有冲突。你问题中的两个instance,第一是在类加载的时候就存在了,不管你用不用他。第二个是你需要用instance了,所以调用了getInstance方法。
模式,就是指解决问题的一种方式,是经过大量实战总结出来的一中通用方案。设计模式,就是在实际开发工作中,总结出来的很多种解决不同种类问题的方案,在软件开发中,叫做“设计模式”。
加上 static 修饰才能被外部的调用呀,
饿汉式是线程安全的,在类创建的同时就已经创建好一个静态的对象供系统使用,以后不在改变
懒汉式如果在创建实例对象时不加上synchronized则会导致对对象的访问不是线程安全的