<b>在Java中操纵筹划情势之Singleton</b>[Java编程]
本文“<b>在Java中操纵筹划情势之Singleton</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
基本概念
ingleton 是一种成立性模子,它用来确保只产生一个实例,并供应一个拜候它的全局拜候点.对一些类来说,保证只有一个实例是很重要的,比方有的时刻,数据库衔接或 Socket 衔接要遭到一定的限制,必须保持同一时间只能有一个衔接的存在.
再举个例子,调集合的 set 中不能包含反复的元素,增添到set里的对象必须是唯一的,假如反复的值增添到 set,它只承受一个实例.JDK中正式应用了Singleton情势来实现 set 的这一特点,大家可以查看java.util.Collections里的内部静态类SingletonSet的原代码.其实Singleton是最简单但也是利用最遍及的情势之一,在 JDK 中到处可见.
简单解析
为了实现 Singleton 情势,我们需求的是一个静态的变量,可以在不成立对象的情形下记忆能否已经产生过实例了.静态变量或静态办法都可以在不产生具体实例的情形下直接调用,这样的变量或办法不会因为类的实例化而有所改变.
在图1的构造中可以看到,uniqueInstance 就是这个独立的静态变量,它可以记忆对象能否已经实例化了,在静态办法 Instance 中对这个变量举行判断,若没有实例化过就产生一个新的对象,假如已经实例化了则不再产生新的对象,仍旧返回从前产生的实例.
图1: Singleton 情势构造
具体实施
实现 Singleton 情势的办法普通有三种.
1、用静态办法实现 Singleton
这种办法是利用静态办法来监督实例的成立.为了避免成立一个以上的实例,我们最好把构造器声明为 private.
这样可以避免客户程序员通过除由我们供应的办法之外的肆意方法来成立一个实例,假如不把构造器声明为private,编译器就会自作聪明的自动同步一个默许的friendly构造器.这种实现办法是最常见的,也就是图1中构造的尺度实现.
public class Singleton
{
private static Singleton s;
private Singleton()
{
};
/**
* Class method to access
the singleton instance of the class.
*/
public static Singleton getInstance()
{
if (s == null)
s = new Singleton();
return s;
}
}
// 测试类
class singletonTest
{
public static void main(String[] args)
{
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
if (s1==s2)
System.out.println
("s1 is the same instance with s2");
else
System.out.println
("s1 is not the same instance with s2");
}
}
singletonTest运行后果是:
s1 is the same instance with s2
这证明我们只成立了一个实例.
以上是“<b>在Java中操纵筹划情势之Singleton</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |