Java设计模式之Singleton

本文详细介绍了Java设计模式中的Singleton模式,包括其三种实现形式:懒汉式、饿汉式和静态内部类方式,并探讨了它们的应用场景及优缺点。

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

使用Java才一年多的时间,虽然这期间也用Java写过几个Android的AP,但是对于高阶部分还是接触的较少。
今天有看到Singleton的Java设计模式,以前没有太专注于这个方面,于是就想把它搞懂。

Singleton模式说白了就是保证在Java应用程序中,一个Class只能有一个实例存在。
这个在我们日常编程中实例还是挺多的,比方说独享的资源,一台机器无论是在什么操作系统上,网络端口都是独享的。也就是说,在同一时刻,我们只能实例化一个Socket连接。延伸的话,我想数据库编程方面应该用很多Singleton模式。

Singleton模式一般有三种形式。

第一种形式:定义一个类,它的构造函数是Private的,它有一个Static的private的该类变量,在类初始化的时候实例化,通过public的getInstance方法获取对它的引用,继而调用其中的方法。
public class Singleton{
private Singleton(){}
private static Singleton instance = new Singleton();//私有静态变量
public static Singleton getInstance(){//注意是public方法,这里提供一个供外部访问本class的静态方法,可以直接访问(这个在我们日常Android编程中应该用的很多吧^^)
return instance;

}
}


第二种形式:以一个静态变量做标记,每次getInstance的时候进行检查,是否已经实例化过。
public class Singleton{
private static Singleton instance = null;
public static synchronized Singleton getInstance(){
//实例化的时候进行检查,如果instance已存在,那么就不去实例化
if(instance==null){
instance=new Singleton();
}
return instance;
}
}


还有一种形式的概念其实和C/C++全局概念相关,就是定义一个类,它的构造函数是private的,所有方法为static的,这样做的好处就是,所有的方法可以在创建前被其他类调用,这样也就只有在Constructor中实例化一次。

关于更多Java设计模式专题,我们可以去参考[url]http://www.ibm.com/developerworks/cn/java/design/[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值