Chinaunix首页 | 论坛 | 博客
  • 博客访问: 523855
  • 博文数量: 151
  • 博客积分: 7010
  • 博客等级: 少将
  • 技术积分: 1405
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-22 14:32
文章分类

全部博文(151)

文章存档

2011年(1)

2010年(23)

2009年(1)

2008年(126)

我的朋友

分类: Java

2008-04-26 14:05:39

    所谓单态设计模式(即是类在内存中只能创建一个实例对象)就是采取一定的方法保证在整个的软件系统中,对某个类只能产生一个对象实例,并且该类只提供一个取得其实例对象的方法.如果我们要让类在一个虚拟机中只能产生一个对象.我们首先必须将类的构造方法的访问权限设置为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
   证明在内存中只有一个实例变量.
阅读(557) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~