Java:根据类实例或静态方法更喜欢Utility Class?

spi*_*e07 5 java static-methods utility instances

我有一个类似这样的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);
    }

}
Run Code Online (Sandbox Code Playgroud)

每次我都要实例化我的Utility类来与MyObject的特定实例进行交互.

myObject作为Session obj出现

MyObjectUtil myObjUtil = new MyObjectUtil(myObject);
myObjUtil.modifyMyObjectInSomeWay("blah");
boolean valid = myObjUtil.isSomeInfoPresentValid();
Run Code Online (Sandbox Code Playgroud)

为了获得相同的结果,我可以使用静态函数,每次使用myObject作为方法参数执行相同的操作.

public class MyObjectUtil {

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

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

}
Run Code Online (Sandbox Code Playgroud)

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

在我的情况下,我应该选择哪种方式?在其他情况下我应该如何选择?

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

JOT*_*OTN 7

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