免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 866 | 回复: 0
打印 上一主题 下一主题

单态设计模式 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 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
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP