单例模式的好处有:
1、某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。
2、省去了new操作符,降低了系统内存的使用频率,减轻GC压力。
3、保证核心交易服务器独立控制整个流程。
下面是具体例子:
一、普通单列模式
public class Singleton {
/* 持有私有静态实例,防止被引用,此处赋值为null,目的是实现延迟加载 */
private static Singleton instance = null;
/* 私有构造方法,防止被实例化 */
private Singleton() {
}
/* 静态方法,创建实例 */
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
/* 如果该对象被用于序列化,可以保证对象在序列化前后保持一致 */
public Object readResolve() {
return instance;
}
}
二、登记式/静态内部类
public class Singleton {
private static class SingletonHolder {
private static final Singleton INSTANCE = new Singleton();
}
private Singleton (){}
public static final Singleton getInstance() {
return SingletonHolder.INSTANCE;
}
}
当然,除了这两种方法之外,还有懒汉式,饿汉式。但是,这两种单列模式,要么就存在线程问题,要么就存在性能问题。(目前以我各人理解)。因为如果要保证线程安全,那么都会用到锁,但是只要加锁,都会有一个问题,就是性能肯定会有损耗。
所以,推荐用上面这种模式,或许我还有许多地方学习的不够,仅供参考。