论坛首页 入门讨论版 OO

关于static的使用

浏览 999 次
该帖已经被评为新手帖
作者 正文
最后更新时间:2008-02-19
大家来讨论一下关于static方法的使用吧.
  按照面向对象的思想,如何来解释static这个现象呢?总觉得有点格格不入.
  static方法使用最多的地方大概是一些工具类中的工具方法了.比如 FileUtil类,或是StringUtil 之类似的.

  看到了一些关于滥用static,导致程序架构很糟糕的说法.于是我希望能够彻底的明确一下这个比较基础,初级的问题,是不是在不考虑类的继承等一些与面向对象紧密相关的地方,同时不需要访问非static就可以放心的使用static 呢?

  最近公司在重新指定一套规范,看意思是不用spring的了,那么如何来管理dao和service对象呢,这时候有了几种声音,有同事说可以把service和dao的方法都写成static的.这在以前的一些很小的应用中也这么做过,因为没有涉及太多的变更,所以倒也并未带来什么坏处.我觉得这个有点怪怪的.但是说不出一个有力的理由来打倒这种说法.有人说factory模式,有人说每个类都做一个单例模式.每个dao和service类都写个单例,是不是也有点怪怪的?

  离开spring,生活会变成这样.

  另外,static被滥用的话最严重的弊端在哪?是否存在性能问题?
   
最后更新时间:2008-02-20
不可以把service和dao写成static
你不考虑线程同步吗
   
0 请登录后投票
最后更新时间:2008-02-21
现有的技术下,为什么不用spring,觉得难以理解,
   
0 请登录后投票
最后更新时间:2008-02-21
armorking 写道
从概念上来讲,并不是所有的实体都是面向instance的


赞成!

比如一个简单的加法
Math.add(10, 20)
返回结果30,非常确定,任何情况下都不会改变。完全没有使用new Math()的必要,也绝对不是出现一个子类覆盖add()方法然后返回10 + 20 = 40的情况。

所以static的存在,还是非常有存在的价值的。

另外,目前情况下完全排斥spring,似乎有些奇怪,是出于什么考虑呢?就算不用spring,其他的ioc容器也可以选择啊。

说可以把service和dao的方法都写成static?? 非常疯狂的想法。
   
0 请登录后投票
最后更新时间:2008-02-21
allenofchina 写道
不可以把service和dao写成static
你不考虑线程同步吗

请问
Service.func(a, b)

a.func(b)
在线程同步的意义上到底有什么区别?
   
0 请登录后投票
最后更新时间:2008-02-21
service和dao的设计跟spring有什么关系?不要把具体的service和dao的方法都声明static的,最好是在更上层的service里,单例取得子service
   
0 请登录后投票
最后更新时间:2008-02-21
不用spring不能说明spring不合适,很可能是公司的整体战略要求。。。
   
0 请登录后投票
最后更新时间:2008-02-21
其实并没有这么复杂,使用主类继承下来就行了,缺点是切换框架比如麻烦。
   
0 请登录后投票
最后更新时间:2008-02-21
static最主要的问题是和多态不兼容
   
0 请登录后投票
最后更新时间:2008-02-22
为啥每一个类都要做单例模式,没必要吧
   
0 请登录后投票
论坛首页 入门讨论版 OO

跳转论坛:
JavaEye推荐