关于Singleton总结

关键词解释:

Singleton是单例模式,单例模式属于对象创建型模式,其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点。

实例:‘类’在实例化后就是一个实例

出发点:

怎样才能保证一个类只有一个实例并且这个实例易于被访问,一个全局变量使得一个对象可以被访问,但它不能防止你实例化多个对象,一个更好的方法是让类自身负责保存他的唯一实例。这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法,这就是Singleton模式。


Java Singleton模式属于管理实例化过程的设计模式家族。Singleton是一个无法实例化的对象。这种设计模式暗示,在任何时候,只能由JVM创建一个Singleton(对象)实例。

如果实例不存在,你通过创建类的新实例的方法建立一个类来执行这个模式;如果存在类的一个实例,就只会返回那个对象的一个引用。


实用性:

  在下面的情况下可以使用Singleton模式

1.当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时

2.当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。

代码演示:

Singleton类:
public class Singleton {

	private static Singleton s;

	private Singleton() {
		System.out.println("A Singleton Model example");
	}

	public static Singleton getInstance() {
		if (s == null) {
			s = new Singleton();
		}
		return s;
	}
}

测试类SingletonTest:

public class SingletonTest {

	public static void main(String[] args) {
		Singleton s1 = Singleton.getInstance();
		
		System.out.println(s1.toString());
		
		for (int i = 0; i < 5; i++) {
			Singleton s2 = Singleton.getInstance();
			System.out.println("The randomed number is " + s2.toString());
		}
		
	}
}

main输出结果

A Singleton Model example
Singleton@18a992f
The randomed number is Singleton@18a992f
The randomed number is Singleton@18a992f
The randomed number is Singleton@18a992f
The randomed number is Singleton@18a992f
The randomed number is Singleton@18a992f


用法:

Singleton类的默认构造器被设为私有private,这样做可防止其它类使用new关键字直接将对象实例化。

对返回Singleton对象的实例方法应用一个静态修饰符static,这使得它成为一个类级方法,不创建对象即可进行访问。



参考文档:

http://blog.sina.com.cn/s/blog_59726b7f0100dry9.html

http://tianli.blog.51cto.com/190322/43743/


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值