`
harrison2010
  • 浏览: 108372 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

静态方法设计探讨

阅读更多
一个公用的类,提供一些常用的办法,这里我就拿把123456格式化成123,456这样的方法来说吧。
方案一:
public class FormatterUtil {
	public String formatterString(String money){
		//.....
		return money;
	}
}

比如在servlet中使用,通过spring依赖注入保持FormatterUtil的单例
private FormatterUtil formatterUtil;

	public void execute(){
		String money ="123456";
		formatterUtil.formatterString(money);
	}
	
	
	public FormatterUtil getFormatterUtil() {
		return formatterUtil;
	}

	public void setFormatterUtil(FormatterUtil formatterUtil) {
		this.formatterUtil = formatterUtil;
	}

方案二:
public class FormatterUtil {
	public static String formatterString(String money){
		//.....
		return money;
	}

}

使用:
public void execute(){
		String money ="123456";
		FormatterUtil.formatterString(money);
	}

util类的内容很多,或者是类似的manager类。
大家认为哪一种解决方案好,或者更好的解决办法。
分享到:
评论
22 楼 rockjava 2008-11-26  
hyys2008 写道
一看都很菜,连该不该用utils类都不知道,javaeye上你们不是无数的人都在讨论设计模式,oo么?这种问题也出来了

老子通常情况想是不用utils的,这些菜鸟即便用utils类估计你们都不会想到要提供一个private的default construction

哎,郁闷,老子又献出了一招绝学,不过,希望你们这些菜鸟能学到丁点就好了。

没事出来叫叫,提高提高知名度!
21 楼 harrison2010 2008-11-26  
hyys2008 大家都是在讨论不要搞的那么粗鲁 。既然你说你的厉害,给大家说明白啊,你不说明白大家都不相信了?
20 楼 hyys2008 2008-11-25  
没想到这里还有几个垃圾,尤其是哪些狂吠的人渣,估计是从石头缝里蹦出来得,什么都不知道,瞎说个毛啊

看你就什么都不知道,谁说只有单列才能有private的constructor了?

你连utils里用private的constructor的作用是什么都不知道还在狂吠个毛啊?一看你就知道从没写过代码。

老子可从来没说用单列,老子也最讨厌单列。
19 楼 fuliang 2008-11-25  
harrison2010 写道
首先谢谢大家的参与和一些批评
我看大家都认同第二种方案,<script type="text/javascript" src="http://www.iteye.com/javascripts/tinymce/themes/advanced/langs/zh.js"></script><script type="text/javascript" src="http://www.iteye.com/javascripts/tinymce/plugins/javaeye/langs/zh.js"></script>有人说用单例我就<script type="text/javascript" src="http://www.iteye.com/javascripts/tinymce/themes/advanced/langs/zh.js"></script><script type="text/javascript" src="http://www.iteye.com/javascripts/tinymce/plugins/javaeye/langs/zh.js"></script>不明白了,为什么要用单列?
在第二种方案中会不会出现这样的情况,希望再次探讨,如果这个工具类中需要使用一个全局的变量,当有两段代码调用utils中的不同的方法,但是都用到这个全局的变量,如果不考虑线程安全的问题,不就会出错了吗?
我想问的是工具类中会不会用全局变量,应该不应该有全局变量,如果有的话,怎么去避免线程不安全的问题,如果要去避免线程不安全的问题,那么是不是第一种方案更佳?


工具类一般都是静态函数吧,一般工具类的暴露的工具方法都是自包含的,不应该使用全局变量。当然Java中的“全局变量"约等于单例的化,线程安全是单例自己负责的,与工具类无关,当然这时候的Java的这种”全局变量“是可以被使用的。另外工具类里面不应该有类的静态成员变量在各个工具类使用并改变它,这样对以后的使用具有副作用。
18 楼 harrison2010 2008-11-25  
首先谢谢大家的参与和一些批评
我看大家都认同第二种方案,有人说用单例我就不明白了,为什么要用单列?
在第二种方案中会不会出现这样的情况,希望再次探讨,如果这个工具类中需要使用一个全局的变量,当有两段代码调用utils中的不同的方法,但是都用到这个全局的变量,如果不考虑线程安全的问题,不就会出错了吗?
我想问的是工具类中会不会用全局变量,应该不应该有全局变量,如果有的话,怎么去避免线程不安全的问题,如果要去避免线程不安全的问题,那么是不是第一种方案更佳?
17 楼 JavaFlasher 2008-11-25  
hyys2008 写道
一看都很菜,连该不该用utils类都不知道,javaeye上你们不是无数的人都在讨论设计模式,oo么?这种问题也出来了

老子通常情况想是不用utils的,这些菜鸟即便用utils类估计你们都不会想到要提供一个private的default construction

哎,郁闷,老子又献出了一招绝学,不过,希望你们这些菜鸟能学到丁点就好了。


人渣!!!
16 楼 xixix2004 2008-11-25  
hyys2008 写道
一看都很菜,连该不该用utils类都不知道,javaeye上你们不是无数的人都在讨论设计模式,oo么?这种问题也出来了

老子通常情况想是不用utils的,这些菜鸟即便用utils类估计你们都不会想到要提供一个private的default construction

哎,郁闷,老子又献出了一招绝学,不过,希望你们这些菜鸟能学到丁点就好了。


好菜
15 楼 Suxinf 2008-11-25  
当然用静态的好了
这就意味着告诉Java编译器,我这个方法不需要创建一个此类的对象即可使
14 楼 hkliya 2008-11-25  
效率很重要吧
当然是静态的效率高了
13 楼 zhajie 2008-11-25  
hyys2008 写道
一看都很菜,连该不该用utils类都不知道,javaeye上你们不是无数的人都在讨论设计模式,oo么?这种问题也出来了

老子通常情况想是不用utils的,这些菜鸟即便用utils类估计你们都不会想到要提供一个private的default construction

哎,郁闷,老子又献出了一招绝学,不过,希望你们这些菜鸟能学到丁点就好了。


不就是单例嘛,在工具类中使用单例不是最佳选择。个人认为单例的最佳场合是数据缓存。
12 楼 Scriptlet 2008-11-25  
楼上的,不用这么狂吧。
至于吗,不就是在utils类中使用singlton模式吗
11 楼 liu0013 2008-11-25  
hyys2008 写道
一看都很菜,连该不该用utils类都不知道,javaeye上你们不是无数的人都在讨论设计模式,oo么?这种问题也出来了

老子通常情况想是不用utils的,这些菜鸟即便用utils类估计你们都不会想到要提供一个private的default construction

哎,郁闷,老子又献出了一招绝学,不过,希望你们这些菜鸟能学到丁点就好了。


狂妄的人,说的具体些!对菜鸟也要有耐心!

通常情况想是不用utils?用什么?

提供一个private的default construction? 好处是什么?(避免什么。。。。)

知道是菜鸟还不说清楚!
10 楼 hyys2008 2008-11-24  
一看都很菜,连该不该用utils类都不知道,javaeye上你们不是无数的人都在讨论设计模式,oo么?这种问题也出来了

老子通常情况想是不用utils的,这些菜鸟即便用utils类估计你们都不会想到要提供一个private的default construction

哎,郁闷,老子又献出了一招绝学,不过,希望你们这些菜鸟能学到丁点就好了。
9 楼 hgalois 2008-11-24  
如果你的转换规则可能要变化
就先定义个接口
写个实现类注入进去比较好

如果转换规则变化不大的话,就用第二种方式
8 楼 yyjn12 2008-11-24  
zxbyhcsdn 写道
面向对象设计的一个原则,
针对可变性封装,
哪个工具类的那些方法,有什么可变的麻!!


个人认为这个是最佳答案.
7 楼 xixix2004 2008-11-24  
dennis_zane 写道
这种无状态,与业务逻辑关系不大的工具类当然静态方法最佳。


就是这个
6 楼 puroc 2008-11-21  
定义成静态方法好,如果使用第一种方案,那么如果有多个类都需要使用这个方法的话,那你就得把这个bean注入到很多其他的bean中。那样配置文件中会多谢很多内容。
5 楼 qingfengjushi1 2008-11-21  
dennis_zane 写道
这种无状态,与业务逻辑关系不大的工具类当然静态方法最佳。



 
4 楼 superxielei 2008-11-20  
public void execute(){  
        String money ="123456";  
        FormatterUtil.formatterString(money);  
    }  

还是静态比较好吧?
3 楼 laiseeme 2008-11-20  
这种还注入啥的 多此一举
Global site tag (gtag.js) - Google Analytics