前段时间偶尔去图书馆逛逛,说实在的,信息学部图书馆的环境实在不咋的,不能久坐。
《head first 设计模式》看到一半了,研究设计模式是从去北邮时看到那本漫谈设计模式开始的,写代码也是一种境界
呀。这本书图与文、理论与生活结合,看起来很轻松惬意,其中单态设计模式最简单了,很少写博客,当然得从简单写起了,
纯粹回忆吧。
单态,观其名,只能有一个实例。有以下特点:
1. 全局访问,实例static化;
2. 构造函数私有化,通过Singleton.getInstance()获得实例;
3. 不想从一开始就获得实例,可通过判断实例化,空时实例,非空那里用;
4. 多线程中注意线程安全,用synchronized加锁;
5. 线程安全了,但却性能下降,用volatile和synchronized加双锁;
综合以上特点,得以下代码:
public class Singleton {
private volatile static Singleton uniqueInstance;
private Singleton() {}
public static Singleton getInstance() {
if (uniqueInstance == null) {
synchronized (Singleton.class) {
if (uniqueInstance == null) {
uniqueInstance = new Singleton();
}
}
}
return uniqueInstance;
}
}
有适合的问题时,就用此方案解决吧。
首次发博,诚邀读者指出不对之处,感激涕流啊。