单例模式的讲解(singleton)



   最近学习C#,遇到需要单例模式的地方,想起当年学习java的时候,这是最简单的一个设计模式了,于是乎回过头来看了一下java的代码,很快就明白了
   单例模式是每次调用一个类的对象时, 都是调用类的同一个实例,而不是调用一次就进行一次实例化,上代码
package singleton;
public class SingleTon
{
private  SingleTon()
{

}
private static SingleTon singleTon = new SingleTon();
public static SingleTon GetInstance()
{
return singleTon;
}
}


package singleton;
public class SingleTonTest
{
public static void main(String[] args)
{
SingleTon singleTon1 = SingleTon.GetInstance();
SingleTon singleTon2 = SingleTon.GetInstance();
System.out.println(singleTon1 == singleTon2);
}
}

其中稍微注意的几点,静态的方法中只能调用静态的属性;
public static SingleTon GetInstance()
{
return singleTon;
}
有时单例模式会在这个方法里有所调整
public static SingleTon GetInstance()
{
if(singleTon == null)
}
singleTon = new SingleTon();
{
return singleTon;
}
但是当此种方法运用在存在多线程的操作中时,有时会出现多个实例化现象,从而打破单例模式。这是由于线程的共享引起的,当时可以用上锁的方法来避免,但显然不如直接用第一种方法实现单例模式来的方便。


 后记:重温了一下张龙老师的讲解感觉还挺亲切,虽然已经决定了走C#的道路,依旧支持java!!!





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值