java关于单例模式的一些疑问?

    小弟最近想学习java的设计模式,就从单例模式来学起吧。大家知道在java语言中,可以利用static 关键字来构建单例模式,主要是因为static 这个关键字在所在的类在被java虚拟机装载的时候,变量是最先被装载(如果有多个,那么按照从上往下的顺序执行的),并且是全局共享的。

    因此:按照这个理解:我写了一个单例模式。代码如下:

    public class Test{
    private static Test test=null;
    public static Test getInstence(){

                 if(test==null)
                {
                     test=mew Test();
                }
                  return test;

      }
   }

       在这个方法里,我申明了一个private static类型的成员变量,然后申明了一个static类型的方法,判断test如果是null,则实例化,然后返回Test类的一个实例。应为static类型的变量是全局共享的,所以,一旦test被实例化,那么则被存放到java虚拟机的堆中,全局共享,以后不会在实例化。直到类的生命周期结束然后才会被销毁。在别的类要引用的时候,只需要Test.getInstence()就可以获得一个实例。这就是我理解的单利模式。

 

    但我在网上看了另一种写法,说要有一个私有的构造函数,代码是这样的。

  
  public class Test{
      private Test(){}

      private static Test test=new Test();

      public static Test getInstence(){ 
  
         return test;
      

       }
  }

我是这样理解这个类的:

 1    private static Test test=new Test();在jvm 装载这个类的时候会初始化这个声明,Test类的实例test已经被实例化。并且全局共享。

 2     public static Test getInstence(){ 
  
         return test;
      

       }

  static的方法getInstence用来返回Test 类的实例。这个实例就是上面已经实例化的那个(唯一的一个)

 问题一:问题是私有的构造函数,我不明白为什么一定要有个私有的构造函数?大家帮  忙看看!

 问题二:在开发单例模式中有那些是需要注意的地方?比如构造方法之类的要注意什 么?

 问题三:单利模式有几种形式?能不能给个例子?听说有懒汉式什么的?

问题四:什么时候需要用到单例模式?

      请大家不宁赐教!多谢!我的邮箱lifeneedyou@163.com ,可以发邮件给我!

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值