单子模式的最大好处是什麽?

我对Singleton设计模式的看法:  
  1.   Singleton设计模式保证一个application中就至多只有一个instance,   注意这里界定的是一个application,   而不是一个System.如果不是一个application的话,就不能够保证了。例如:在分布式环境下,虽然单服务器端实现了Singleton,但是多服务器端(System)就有可能不能保证是Singelton。  
        保证application中实现该模式的Singleton   类至多只有一个instance,   可以在一定范围内更好地确定业务逻辑,   尤其是那些保证现实生活中application中只有一个的概念。例如前面说的   数据库连接池就是一个典型;  
  2.   Singleton设计模式并不能保证节省资源,这是一点需要澄清的。如果要节省资源,大可不必使用Singleton设计模式,Singleton的设计目标并不是为了节省资源,而且为了保证全局性的逻辑统一;  
  3.   Singleton设计模式与其他设计模式(如   Factory设计模式)的联合使用基本上已经成为了一种“普遍”的技巧,对Singleton的熟悉可以帮助我们在理解他人工作上和相互交流上带来方便。  
  4.   Singleton设计模式的例子:  
        Singleton设计模式依据设计方法的不同,一般有两种方法,这里面涉及到一个"delay   initialization"的问题,但基本的原理是一样的。下面分别给出例子:  
         
      /**  
                  @(#)SampleManager.java  
        */  
         
        package   org.quickpoint.SingletonSample;  
        /**  
                        SampleManager   is   a   sample   displaying   usage   of   singleton   design   pattern.  
                        This   is   pre   initialized   implementation.  
                        @author   quickpoint  
                        @version   1.0   02/25/2005    
          */  
          public   class   SampleManager  
          {  
                      /**   Only   one   instance(   pre   initialized   )*/  
                      private   static   SampleManager   instance   =   new   SampleManager();  
                       
                      /**   Constructor  
                              In   a   private   domain   to   ensure   that   could   not   be   initialized   by   outter.  
                        */  
                      private   SampleManager()  
                      {  
                            System.out.println("This   is   a   sample   manager.");  
                      }  
                       
                      public   synchronized   static   SampleManager   getInstance()  
                      {  
                            return   instance;          
                      }  
                       
                      //   Display   how   to   use  
                      public   static   void   main(   String[]   args   )  
                      {  
                        SampleManager   manager   =   SampleManager.getInstance();  
                      }  
          }  
  ----------------------------------------------        
         
          /**  
                  @(#)SampleManager.java  
        */  
         
        package   org.quickpoint.SingletonSample;  
        /**  
                        SampleManager   is   a   sample   displaying   usage   of   singleton   design  
  pattern.  
                        This   is   lazy   initialized   implementation.  
                        @author   quickpoint  
                        @version   1.0   02/25/2005    
          */  
          public   class   SampleManager  
          {  
                      /**   Only   one   instance(   pre   initialized   )*/  
                      private   static   SampleManager   instance   =   null;  
                       
                      /**   Constructor  
                              In   a   private   domain   to   ensure   that   could   not   be   initialized   by   outter.  
                        */  
                      private   SampleManager()  
                      {  
                            System.out.println("This   is   a   sample   manager.");  
                      }  
                       
                      public   synchronized   static   SampleManager   getInstance()  
                      {  
                              if(   null   ==   instance   )  
                              {  
                              instance   =   new   SampleManager();  
                              }  
                               
                            return   instance;          
                      }  
                       
                      //   Display   how   to   use  
                      public   static   void   main(   String[]   args   )  
                      {  
                        SampleManager   manager   =   SampleManager.getInstance();  
                      }  
          }  
           
   
  ------------------------------------------------  
  附加说明  
  Singleton设计模式设计时的要点在于:  
  1:要有一个该类的instance作为class   member,   如例子中的   instance(也可以取另外的名字),   但不必一开始就实例化,可以使用lazy   intialize   技术;  
  2:   把类的constructor设为private,以防止外部类调用;  
  3:   实现对instance的调用,如例子中的   getInstance()方法,   至于是否要synchronize,   就要看所在的application中是否有multi   thread操作了。我一般加上synchronize  
   
   
  建议参考  
  <>  
  <>   of   GoF  
  <>这本书有3种,   一种是阎宏的,   一种是Cooper的,   还有一种记不起来作者了。   
 

你可能感兴趣的:(设计模式,(Design,Pattern))