Java设计模式之Singleton

java

使用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推荐


  • 上海:天会皓闻诚聘资深Java架构师
  • 北京:手机之家网站诚聘PHP程序员
  • 成都:月薪5千到1万招聘Java开发工程师
  • 上海:天会皓闻诚聘CTO技术总监
  • 上海:高薪诚聘Python开发人员




以上是 Java设计模式之Singleton 的全部内容, 来源链接: utcz.com/z/392333.html

回到顶部