当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:15:00  来源:本站整理

<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编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .