设计模式-单例模式解析

什么叫单例模型, 直接上代码:
一,同步方法

public class Singleton{
private static Singleton instance;

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

二,放弃同步,使用静态变量:

public class Singleton{
private static Singleton instance;

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

三,比较新颖的写法:

public class Singleton {

static class SingletonHolder {
static Singleton instance = new Singleton();
}

public static Singleton getInstance() {
return SingletonHolder.instance;
}

}

[table]
|虽然你看完了上面的3中形式, 也许你已经都忘了! 所以你在回头看一种就好了认真理解第一种就行了。|
[/table]

单例其实的原理就是 使用对象不是直接通过new来实例化, 而是使用静态方法getInstance来获得一個对象的引用,如果该对象不是空,就返回对象引用,如果为空就创建一個对象返回。


当是为什么要使用单例模型呢? 特别是在web方面, 尤其重要。因为需要管理的配置太多了,用户也多。


其实我们在使用对象的时候都是new一下,在去操作这个对象。但是如果这个对象 ,是比较全局的,这个很重要,不能乱用单例,但是比较全局的,我们就可以考虑使用单例, 这样不仅不用new多个, 而且还起到了协调系统整体的行为 ;

取个例子: 配置管理上,在服务器程序中, 服务器的配置信息存放在一個文件中,然后用这个单例去统一的读取信息, 之后其他的服务对象在通过这个对象去读取配置信息,并且操作。

这样就简化了配置管理的复杂程度。


注意: 多线程中的单例。

在多线程中使用单例要格外小心, 两个线程没有检查到唯一实例的存在,有可能同时创立, 解决的办法就是 给已经实例出单例的变量加上互斥锁。


[size=x-small;]Ext JS中也使用了不少的单例模式,JS使用单例,可以对客户浏览器中的内存得到充分的利用。[/size]

[size=x-small;] 以上只为个人理解,如有不恰当处,还望大家批评指正。[/size]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值