`
harrison2010
  • 浏览: 108026 次
  • 性别: 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  
这种还注入啥的 多此一举

相关推荐

    Java中的Static块与静态方法

    本文将深入探讨Java中的静态块与静态方法,解析它们的区别、联系以及执行顺序,帮助读者更全面地理解`static`关键字在Java中的运用。 ### 静态方法 静态方法是通过`static`关键字声明的,它属于类而不属于类的任何...

    生成静态的方法

    下面我们将深入探讨静态方法、静态变量以及静态类等相关的知识点。 1. 静态方法 静态方法是与类关联,而不是与类的实例关联的方法。这意味着我们不需要创建类的实例就可以调用静态方法。它们在内存中只有一份,且在...

    通过反射调用静态方法

    本文将详细讲解如何通过反射调用静态方法,并探讨在特定场景下,如MyBatis中的应用。 首先,理解反射的概念是至关重要的。在Java中,反射API(java.lang.reflect)允许我们获取类的信息,包括类名、构造函数、方法...

    c#面向对象静态类、构造方法、静态方法介绍.zip

    在C#编程中,面向对象是核心特性之一,它提供了静态类、构造方法以及静态方法等概念,这些是创建高效、可维护代码的关键元素。让我们深入探讨这些知识点。 首先,静态类是C#中不能被实例化的类,它们只包含静态成员...

    php伪静态方法

    本文将深入探讨PHP实现伪静态的方法及其优势。 一、什么是伪静态? 伪静态,顾名思义,是指在不改变网站实际动态生成页面的情况下,通过一定的技术手段让网页URL呈现出静态化的外观。静态页面在SEO中通常被认为更...

    易语言实现类静态数据成员的方法

    在这两种方法中,`_创建`子程序通常用于初始化静态数据成员,`_获取静态数据`和`_设置静态数据`则是为了读取和修改静态数据成员的值。在易语言中,这些子程序是类的成员函数,可以通过类实例或类名直接调用。 总结...

    静态的魔力:Java中静态方法和变量的深度解析

    本文将深入探讨Java中的静态方法和静态变量,揭示它们的工作原理和实际应用。 #### 二、静态特性的概述 在Java中,静态(static)关键字被用来修饰类的成员变量和方法,表示这些成员属于类本身而非类的某个具体...

    Xcode编译静态库方法

    本篇文章将深入探讨如何使用Xcode编译静态库,这是iOS开发中常见的需求,尤其是在开发组件化或者第三方库时。 静态库是一种预先编译的代码集合,可以在编译时直接嵌入到应用中,使得应用包含了库的所有代码,不需要...

    Python 类方法和实例方法(@classmethod),静态方法(@staticmethod)原理与用法分析

    在设计类时,应根据方法所需的数据和上下文来选择合适的方法类型。正确地使用这些方法可以帮助提高代码的可读性和可维护性,同时避免不必要的复杂性。了解和熟练掌握类方法、实例方法和静态方法的使用,是成为一名...

    java之中的静态变量与静态方法的继承与覆盖问题.doc

    Java 语言中的静态变量和静态方法是类级别的成员,它们不属于任何实例,而是直接关联到类本身。...在设计类和方法时,应考虑它们是否需要参与到多态中,以及是否应当使用静态修饰符,以便正确地管理类的行为和状态。

    .NET的静态与非静态的区别分析

    静态构造函数通常用来设置类型级别的初始化,例如初始化静态字段或者创建静态资源。 再来看静态方法和实例方法。静态方法属于类,可以直接通过类名调用,不需要实例化对象。它们不能访问类的非静态成员,因为这些...

    放大电路静态工作点设置目的及方法

    本文旨在深入探讨放大电路静态工作点设置的目的及其调整方法,并结合甲乙类放大电路的特点进行具体说明。 #### 二、放大电路基础知识 放大电路主要功能在于将微弱的电信号(如声音信号)进行增强,以便于后续的...

    Qt静态函数发送信号

    本文将深入探讨如何在Qt中实现在静态函数中发送信号。 首先,我们需要理解Qt的信号与槽机制。信号是类中的特殊成员函数,它们不执行任何操作,但可以在特定事件发生时被“发射”或触发。槽则是响应这些信号的函数,...

    伪静态的设置方法

    伪静态设置方法详解 在网站开发与管理过程中,伪静态技术是一种常见的URL美化方式,它通过将动态页面的URL转化为类似静态页面的形式,不仅能够提升用户体验,还对搜索引擎优化(SEO)有着积极的影响。本文将深入...

    详谈php静态方法及普通方法的区别

    在PHP的错误报告级别设置得严格的情况下,尝试用类名静态调用普通方法也会得到警告或错误,因为这种方式并不符合普通方法的设计原则。不过在PHP的早期版本中,由于面向对象的检测不够严格,某些情况下,即使是在静态...

    静态库_动态库生成过程及其调用方法详解

    本篇文章将深入探讨静态库和动态库的生成过程,以及它们的调用方法,特别关注在Visual Studio 2008环境下的实现。 首先,我们来了解静态库。静态库(Static Library)是编译好的二进制文件,它包含了可供其他程序...

    静态网页课程设计

    在本课程设计中,我们将深入探讨“静态网页”的概念、设计方法和技术,旨在帮助学习者掌握创建高效、美观且功能完善的静态网站的技能。作为网页设计师或开发者的入门基础,理解并熟练运用静态网页至关重要。 首先,...

    tags标签伪静态的方法

    本文将深入探讨“tags标签伪静态”的方法,这是一种针对网站标签(tags)页面进行伪静态处理的技术实现。 ### 一、什么是伪静态? 伪静态,英文名为Pseudo Static,是指将动态网页的URL伪装成静态网页的URL,即...

    静态网站设计要求

    本篇文章将深入探讨静态网站设计的要求及其相关知识点。 首先,设计题目是静态网站设计的起点。根据描述,我们可以看到设计题目可以自选,也可以从个人、班级网站、电子商务网站、音乐或视频播放网站、学习资源网站...

Global site tag (gtag.js) - Google Analytics