我有一个 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);
}
}
每次我必须实例化我的 Utility 类以与 MyObject 的特定实例交互时。
myObject 以 Session obj 的形式存在
MyObjectUtil myObjUtil = new MyObjectUtil(myObject);
myObjUtil.modifyMyObjectInSomeWay("blah");
boolean valid = myObjUtil.isSomeInfoPresentValid();
为了获得相同的结果,我可以使用静态函数每次都使用 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 实例调用几个方法,所以对我来说第一个解决方案似乎更正确。同时,由于我对我的控制器有很多请求,所以每次我最终都会创建很多 MyObjectUtil 实例,因为 myObject 与特定的 http 请求相关。
在我的情况下我应该走哪条路,在其他情况下我应该如何选择?
MyObject 被一些实用程序类以特定方式使用,例如 MyObjectXXXUtil MyObjectYYYUtil。我想将这些 Util 方法(修改 myObject 并检查特定状态)排除在特定的 MyObject 实现之外,因为它们并不特定于此。许多 Util 函数可以以某种方式与 MyObject 交互。