使用Java才一年多的时间,虽然这期间也用Java写过几个Android的AP,但是对于高阶部分还是接触的较少。
今天有看到Singleton的Java设计模式,以前没有太专注于这个方面,于是就想把它搞懂。
Singleton模式说白了就是保证在Java应用程序中,一个Class只能有一个实例存在。
这个在我们日常编程中实例还是挺多的,比方说独享的资源,一台机器无论是在什么操作系统上,网络端口都是独享的。也就是说,在同一时刻,我们只能实例化一个Socket连接。延伸的话,我想数据库编程方面应该用很多Singleton模式。
Singleton模式一般有三种形式。
第一种形式:定义一个类,它的构造函数是Private的,它有一个Static的private的该类变量,在类初始化的时候实例化,通过public的getInstance方法获取对它的引用,继而调用其中的方法。
第二种形式:以一个静态变量做标记,每次getInstance的时候进行检查,是否已经实例化过。
还有一种形式的概念其实和C/C++全局概念相关,就是定义一个类,它的构造函数是private的,所有方法为static的,这样做的好处就是,所有的方法可以在创建前被其他类调用,这样也就只有在Constructor中实例化一次。
关于更多Java设计模式专题,我们可以去参考http://www.ibm.com/developerworks/cn/java/design/
已有 0 人发表留言,猛击->>这里<<-参与讨论
JavaEye推荐
今天有看到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推荐