设计模式之Singleton(单态)

        对设计模式主要参考了板桥里人 http://www.jdon.com 2002/05/07的blog,在这里我仅整理并发表到自己的blog中以便做个记录,方便随时查阅。
定义:Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。

在很多操作中,比如建立目录 数据库连接都需要这样的单线程操作。使用Singleton的好处还在于可以节省内存,因为它限制了实例的个数,有利于Java垃圾回收(garbage collection)。

下面是代码:

/**
 * 第一种形式
 *
 */
public class SingletonA {

	private static int i = 0;
	private SingletonA(){
		System.out.println("create a instanceA");
	}
	
	private static SingletonA instance = new SingletonA();
	
	public static SingletonA  getInstance()
	{
		System.out.println("i==" + i++);
		return instance;
	}
}

第二种形式:

/**
 * 第二种形式
 *
 */
public class SingletonB {

	private static int i = 0;
	private SingletonB(){
		System.out.println("create a instanceB");
	}
	private static SingletonB instance = null;
	
	public static synchronized SingletonB getInstance()
	{
		if(instance == null)
		{
			instance = new SingletonB();
		}
		System.out.println("i==" + i++);
		return instance;
	}
}

测试代码:

public class TestPattens {

	/**
	 * test
	 * @param args
	 */
	public static void main(String args[])
	{
		//test SingletonA
		//SingletonA  siton1 = SingletonA.getInstance();
		//SingletonA  siton2 = SingletonA.getInstance();
		
		SingletonB  sitonB1 = SingletonB.getInstance();
		SingletonB  sitonB2 = SingletonB.getInstance();
	}
}

打印的结果是:

create a instanceB
i==0
i==1


说明实例只创建了一次。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值