Design Patterns:Singleton in Java code

本文介绍 Java 中 Singleton 设计模式的简单实现方式,并通过代码示例展示其工作原理。该模式确保一个类只有一个实例,并提供一个全局访问点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文是java简单实现singleton,用代码体会它

 

什么是singleton?

在new之前,需要判断是否存在实例(如果存在,返回它;如果不存在,生成实例)。如:

	static public Singleton instance() {
		if (null == _instance) {
			_instance = new Singleton();
		}
		return _instance;
	}

	static private Singleton _instance = null;

 

singleton有哪些用途?

比如统计网站访问量,数据库连接池。就是能使用它特性的地方(废话)。

 

以下是代码:

PatternSingleton:          singleton类

PatternSingletonTest: singleton类的测试

 

/**
 * A utility class of which at most one instance can exist per VM.
 * 
 * Use Singleton.instance() to access this instance.
 * From: http://radio.weblogs.com/0122027
 * /stories/2003/10/20/implementingTheSingletonPatternInJava.html
 */

public class PatternSingleton {

	/**
	 * A handle to the unique Singleton instance.
	 */
	static private PatternSingleton _instance = null;
	private int count;

	/**
	 * The constructor could be made private to prevent others from
	 * instantiating this class. But this would also make it impossible to
	 * create instances of PatternSingleton subclasses.
	 */
	protected PatternSingleton() {
		count=0;
	}

	/**
	 * @return The unique instance of this class.
	 */
	static public PatternSingleton instance() {
		if (null == _instance) {
			_instance = new PatternSingleton();
		}
		return _instance;
	}

	// . ...additional methods omitted...
	public int getCount(){
		return count;
	}

	public void setCount(int cou){
		count=cou;
	}
	
	public void addCount(){
		count++;
	}
	
}

 

public class PatternSingletonTest {

	public static void main(String args[]){
		PatternSingleton test = PatternSingleton.instance();
		printCount(test,"Original instance ");
		test.addCount();
		printCount(test,"Original instance add");
		test.setCount(10);
		printCount(test,"Original instance set");
		
		//another instance
		PatternSingleton test1 = PatternSingleton.instance();
		printCount(test1,"Another  instance");
		test1.setCount(5);
		printCount(test,"Another  instance set");
		
		printCount(test,"Original instance set");
		
		//reset
	}
	
	public static void printCount(PatternSingleton test,String str1){
		String str=str1+"\tThe count is :"+test.getCount();
		System.out.println(str);
	}

}

 

 

更多资源:

单例模式的一个疑问

http://www.ibm.com/developerworks/cn/java/designpattern/singleton/

http://www.javaworld.com/columns/jw-java-design-patterns-index.shtml

http://www.javaworld.com/javaworld/jw-04-2003/jw-0425-designpatterns.html?page=1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值