Java设计模式之Singleton

Posted on 2010-03-03 22:35  FreeSkyCD  阅读(233)  评论(0编辑  收藏  举报
使用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设计模式专题,我们可以去参考http://www.ibm.com/developerworks/cn/java/design/



已有 0 人发表留言,猛击->>这里<<-参与讨论


JavaEye推荐



Copyright © 2024 FreeSkyCD
Powered by .NET 8.0 on Kubernetes