`

设计模式之单例模式

阅读更多

单例模式是一中常见的设计模式,使用它要满足以下条件:

第一 : 系统中只要求有一个实例。

第二 : 这个实例必须有单例类自己提供。

在JAVA中的单例设计模式有两种形式:可分为饿汉式单例和懒汉式单例。

 1 饿汉式单例

java 代码
  1. public class Singlon{   
  2.        
  3.     private static Singlon instance = new Singlon();   
  4.        
  5.     private Singlon(){   
  6.     }   
  7.        
  8.     public static Singlon getInstance(){   
  9.        
  10.         return instance ;   
  11.     }   
  12. }  

2 懒汉式单例

java 代码
  1. public class Singlon{   
  2.        
  3.     private static Singlon instance = null;   
  4.        
  5.     private Singlon(){   
  6.     }   
  7.        
  8.     synchronized public static Singlon getInstance(){   
  9.       if(instance==null){   
  10.         instance = new Singlon();   
  11.       }   
  12.         return instance ;   
  13.     }   
  14. }  

 

无论是哪种单例都不能继承,因为它们的构造器是私有的。而对于饿汉式单例来说是在类刚被加载后就初始化的,而懒汉式是在静态方法里进行初始化。从资源利用的角度来说,懒汉式可能好点,但是就时间方面考虑饿汉式好点。GOF将单例设计模式设计为了懒汉式,那是因为C++中类的静态初始化和类加载的顺序不固定。不过要利用好单例也不是件容易的事情,因为在设计到多线程共享的情况下,只有一个实例可能造成性能和安全方面的种种问题。因此要用单例也要从综合方面考虑。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics