网页功能: 加入收藏 设为首页 网站搜索  
Java Q&A: 使用Singleton模式?给我一个理由先!
发表日期:2004-07-30作者:[转贴] 出处:  


Java Q&A: 使用Singleton模式?给我一个理由先!

Q: 在很多地方我都看到使用了Singleton类。我的问题是:较之一个包含static方法(methds)的类,使用Singleton具有什么优点呢?

A: 不使用包含static方法的类而使用Singleton,其区别在于,后者可以带来有效的面向对象设计。Singleton通常展示的是一种更清晰的方法。而一个包含static方法的类只不过是函数或公用子程序(utilities)的简单罗列。

你会问,罗列一组函数有什么问题?

很简单。罗列函数,你就不是在进行面向对象编程;你的工作实际上倒退到了传统的面向过程的程序设计中。悄然之间,对象不再是程序的焦点,而你自己也陷入到以数据为中心的程序设计模式中。换句话说,你不再是向包装了状态和行为的对象发送消息,而是针对数据进行函数调用。公用子程序必然造成行为和数据完全分离,而这一点在面向对象设计中是绝不允许的。

也不是说完全不能使用公用子程序。面向对象的公用子程序确实存在。有时也需要将对象当作数据来处理。例如,我曾写了一套公共子程序,用来将Java对象转换成相应的CORBA形式。很难将那些方法写成一个类,因为它们确实没有状态信息;我也不想将转换代码嵌入到Java类中。然而,这确实容易带来混乱。

对于系统中的某个类,如果想让它无论什么时候只有一个实例存在,这种情况下可以使用Singleton。例如有这样一个类,它提供对CORBA server的访问,还要做到负载平衡。这时候就不要使用多个这样的对象,因为每个对象都会和相同的server打交道。占用冗余资源当然浪费。所以,对server的访问最好集中到一个实例之中。

 


我来说两句】 【加入收藏】 【返加顶部】 【打印本页】 【关闭窗口
中搜索 Java Q&A: 使用Singleton模式?给我一个理由先!
本类热点文章
  Java读取文件中含有中文的解决办法
  Java读取文件中含有中文的解决办法
  简单加密/解密方法包装, 含encode(),de..
  EJB 3.0规范全新体验
  java简单的获取windows系统网卡mac地址
  让Java程序带着JRE一起上路
  抢先体验"野马"J2SE6.0
  Java连接各种数据库的实例
  Java连接各种数据库的实例
  JAVA的XML编程实例解析
  Java学习从入门到精通(附FAQ)
  新手必读:Java学习的捷径
最新分类信息我要发布 
最新招聘信息

关于我们 / 合作推广 / 给我留言 / 版权举报 / 意见建议 / 广告投放  
Copyright ©2003-2024 Lihuasoft.net webmaster(at)lihuasoft.net
网站编程QQ群   京ICP备05001064号 页面生成时间:0.0114