Chinaunix

标题: 单态设计模式 [打印本页]

作者: zyme007    时间: 2008-04-26 14:05
标题: 单态设计模式

    所谓单态设计模式(即是类在内存中只能创建一个实例对象)就是采取一定的方法保证在整个的软件系统中,对某个类只能产生一个对象实例,并且该类只提供一个取得其实例对象的方法.如果我们要让类在一个虚拟机中只能产生一个对象.我们首先必须将类的构造方法的访问权限设置为private,这样,就不能用new操作符在类的外部产生类的对象了,但在类内部仍可以产生该类的对象.因为在类的外部开始还无法得到类的对象,只能调用该类的某个静态方法一返回类内部创建的对象,静态方法只能访问类中的静态成员变量,所以指向类内部产生的该类对象的变量也必须定义成静态的.
例如:
   class SingleObj
   {
      //在类的内部创建一个变量,可是因为这个变量是对象中的一个变量,而调用方法时对象还
      //没有产生,所以就要设置成静态的.
      static SingleObj objRef = new SingleObj();
                     
      // 由于想获得这个对象,那么就要提供一个方法给外面直接访问,但是外面还没有创建对象
      // 就要访问这个方法,所以必须是静态的.无论以后调用多少次getInstance这个成员方法,
      // 它返回的对象都是一个.
      public static SingleObj getInstance()
      {
           return objRef;
      }
      
      //构造函数设为private,其他类就无法用new来创建该类的对象
      private SingleObj()
      {
      }
   }            
            
   class Test
   {
       public static void main(String [] args)
       {
           SingleObj obj1 = SingleObj.getInstance();  
           SingleObj obj2 = SingleObj.getInstance();  
           System.out.println(obj1==obj2);
       }
   }
   
   输出的结果为:ture
   证明在内存中只有一个实例变量.


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/67175/showart_586920.html




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2