2010-12-13 55 views
3

我有,做这样的事情Java:喜欢实用类取决于类实例或静态方法?

public class MyObjectUtil { 

    private final MyObject myObject; 

    public MyObjectUtil (MyObject myObject){    
     this.myObject = myObject;  
    } 

    public boolean isSomeInfoPresentValid() { 
     return myObject.isSomething(); 
    } 

    public void modifyMyObjectInSomeWay(String blah) { 
     myObject.modify(blah); 
    } 

} 

每一次我实例化我的实用工具类与MyObject来的具体实例进行交互的Java类。

myObject的存在作为会议的obj

MyObjectUtil myObjUtil = new MyObjectUtil(myObject); 
myObjUtil.modifyMyObjectInSomeWay("blah"); 
boolean valid = myObjUtil.isSomeInfoPresentValid(); 

要达到同样的结果,我可以有一个做的每一次的方法PARAM使用myObject的相同操作的静态函数。

public class MyObjectUtil { 

    public static boolean isSomeInfoPresentValid(MyObject myObject) { 
     return myObject.isSomething(); 
    } 

    public static void modifyMyObjectInSomeWay(MyObject myObject, String blah) { 
     myObject.modify(blah); 
    } 

} 

我不知道该走哪条路。
我在我的控制器中使用Util类,有时我需要针对同一个myObject实例调用几个方法,所以对我来说第一个解决方案似乎更正确。与此同时,由于我对控制器有很多请求,因此每当myObject与特定的http请求相关时,我最终可能会创建大量的MyObjectUtil实例。

我该怎么办我的情况,我应该如何选择在其他情况下?

MyObject以某种实用程序类(如MyObjectXXXUtil MyObjectYYYUtil)的特定方式使用。我想从特定的MyObject实现中获得这些Util方法(即修改myObject并检查特定状态),因为它们不是特定于此的。许多Util函数可以以某种方式与MyObject交互。

回答

7

如果MyObjectUtil中的方法完全依赖于MyObject,那么我将它们放在MyObject中。当有许多可以使用这些方法的类时,实用程序类很有用。

+0

我同意这种感谢。 MyObject以某些实用程序类(如MyObjectXXXUtil MyObjectYYYUtil)的特定方式使用。我想从特定的MyObject实现中获得这些Util方法(即修改myObject并检查特定状态),因为它们不是特定于此的。许多Util函数可以以某种方式与MyObject交互。 – spike07 2010-12-13 15:12:43

+0

如果util用于像TimeZone这样的原生Java对象,该怎么办?那样我会做什么?我会创建一个名为TimeZoneUtils的类吗?还是应该创建一个扩展TimeZone的类? – 2013-08-23 06:12:07