Singleton的实现方式

来源于《设计模式之禅》 秦小波著

1. 饿汉模式(推荐)

package com.zby.singleton;
/*
 * 饿汉模式,推荐
 */
public class Singleton1 {
	private static final Singleton1 singleton = new Singleton1();
	private Singleton1(){}
	public static Singleton1 getinstance() {
		return singleton;
	}
	public static void doSomething() {
		//类中的其他方法,尽量是static
	}
}

2. 饱汉模式(不推荐)

package com.zby.singleton;

/*
 * 懒汉模式
 */
public class Singleton2 {
	private static Singleton2 singleton = null;
	private Singleton2(){}
	public static synchronized Singleton2 getinstance() {
		if(singleton == null)
			singleton = new Singleton2();
		return singleton;
	}
}

一般在什么情况下使用单例模式?

1. 单例工厂,SSH框架中比较经典的模式

2. 使用代理层的时候,对象池的时候

3. 读取配置文件的类要用单例模式,配置文件只要读取一次就可以全局使用了,并且对配置文件进行存储操作的时候,如果实例多了,会造成不同步

4. 其实最简单的就应该是经常使用的数据库连接

5. 创建一个对象需要消耗的资源过多,如要访问IO和数据库等资源

6. 需要定义大量的静态常量和静态方法(如工具类的环境),可以采用单例模式(当然,也可以直接声明为static的方式)。



单例模式:保证一个类中,有且只有一个实例存在并提供一个访问点供全局访问,该实例可以被所有的程序来访问。一般在以下情况下使用:

1. 当要用一个类时,又要用该类中的一个实例

2. new来创建实例时会给程序造成资源的浪费,而且实例越多也不好控制

3. 不同的线程调用时,可能会引起不同步的现象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值