打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
单例模式简述

什么是单例模式

确保一个类只有一个实例并提供全局访问点。

注意:

#确保多线程环境下也是只有一个实例

#确保反射机制下也是只有一个实例,但这机制下连一个实例都获取不到,谁能获取得到一个实例告知我!

private SingletonClass1ThreadSafe() { 

//阻止通过反射机制创建多个实例 

if(singletonClass1 != null) {

 throw new IllegalStateException();

 } 

}

性能最好的单例模式
/**
 * #利用内部类后加载机制:内部类只有被调用时才会去初始华内部类并初始化内部类的静态成员变量;
 * #线程安全
 * #无需用到java一些机制来保证线程安全,比如volatile或者synchronized
 * #阻止了反射机制创建对象
 * @author sunyq
 *
 */
public class InitializingOnDemandHolderIdiom {
/**
* 私有构造函数
*/
private InitializingOnDemandHolderIdiom() {
//阻止反射机制创建对象
if(HelperHolder.INSTANCE != null){
throw new IllegalStateException();
}
}
public static InitializingOnDemandHolderIdiom getInstance() {
return HelperHolder.INSTANCE;
}
private static final class HelperHolder{
private static InitializingOnDemandHolderIdiom INSTANCE  = new InitializingOnDemandHolderIdiom();
}
}





全局变量和单例模式的区别

(1)全局变量是对一个对象的静态引用,全局变量确实可以提供单例模式实现的全局访问功能,但是它并不能保证应用程序只有一个实例;编码规范也明确的指出应该要少使用全局变量,因为过多的使用全局变量会造成代码难读;全局变量并不能实现继承。

(2)、单例模式虽然在继承上不能很好的处理,但是还是可以实现继承的;单例模式在类中保存了它的唯实例这个类,可以保证只能创建一个实例,同时它还提供了一个访问该唯一实例的全局访问点。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
静态类和单例模式区别
单例是个好的设计模式吗?
Android设计模式系列(3)
单例模式
PHP设计模式之单例模式
设计模式之一(单例模式)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服