定义
客户端不再考虑是否需要实例化的问题,把责任都给了应负责的类处理。保证一个类仅有一个或者有限的实例,并提供一个全局生成实例化对象的入口。
应用场景
- 频繁创建对象然后再销毁
- 创建对象时耗时过多或者耗资源过多,但又经常用到的对象
- 有状态的工具类对象
- 频繁访问数据库或文件的对象
上代码
饿汉模式
事先准备好对象待使用
public class HungryDbConnect {
private HungryDbConnect() {
}
private static final HungryDbConnect CONNECT = new HungryDbConnect();
public static HungryDbConnect getInstence() {
return CONNECT;
}
}
懒汉模式
需要时再创建
public class LazyDbConnect {
private static volatile LazyDbConnect connect = null;
private LazyDbConnect() {
}
public static LazyDbConnect getInstance() {
if (null == connect) {
synchronized (LazySingleton.class) {
if (null == connect) {
connect = new LazyDbConnect();
}
}
}
return connect;
}
}