Ich habe eine Java-Klasse, die so etwas wie diesesJava: Präferenzklasse abhängig von einer Klasseninstanz oder statischen Methoden?
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);
}
}
jedes Mal, wenn ich habe tut meine Utility-Klasse zu instanziiert mit einer bestimmten Instanz von MyObject zu interagieren.
myObject liegt als Session obj
MyObjectUtil myObjUtil = new MyObjectUtil(myObject);
myObjUtil.modifyMyObjectInSomeWay("blah");
boolean valid = myObjUtil.isSomeInfoPresentValid();
das gleiche Ergebnis zu erreichen, ich statische Funktionen haben könnte, die die gleichen Operationen myObject jedes Mal, als Methode param tun verwenden.
public class MyObjectUtil {
public static boolean isSomeInfoPresentValid(MyObject myObject) {
return myObject.isSomething();
}
public static void modifyMyObjectInSomeWay(MyObject myObject, String blah) {
myObject.modify(blah);
}
}
Ich weiß nicht, welchen Weg ich gehen sollte.
Ich benutze die Util-Klasse in meinen Controllern und manchmal muss ich einige Methoden gegen die gleiche myObject-Instanz aufrufen, so scheint mir die erste Lösung die korrektere. Zur gleichen Zeit, da ich viele Anfragen gegen meine Controller habe, kann ich am Ende immer viele MyObjectUtil-Instanzen erstellen, da myObject mit einer bestimmten http-Anfrage in Verbindung steht.
Welchen Weg soll ich in meinem Fall gehen und wie sollte ich in anderen Fällen wählen?
MyObject wird auf bestimmte Arten von Utilities-Klassen wie MyObjectXXXUtil MyObjectYYYUtil verwendet. Ich möchte diese Util-Methoden (die meinObject ändern und den spezifischen Status überprüfen) aus der spezifischen MyObject-Implementierung heraushalten, da sie nicht spezifisch dafür sind. Viele Util-Funktionen können in gewisser Weise mit MyObject interagieren.
Ich stimme dem zu Dank. MyObject wird auf bestimmte Arten von Utilities-Klassen wie MyObjectXXXUtil MyObjectYYYUtil verwendet. Ich möchte diese Util-Methoden (die meinObject ändern und den spezifischen Status überprüfen) aus der spezifischen MyObject-Implementierung heraushalten, da sie nicht spezifisch dafür sind. Viele Util-Funktionen können in gewisser Weise mit MyObject interagieren. – spike07
Was ist, wenn das Util für ein natives Java-Objekt wie TimeZone ist? Was würde ich in diesem Fall tun? Würde ich eine Klasse namens TimeZoneUtils erstellen oder sollte ich eine Klasse erstellen, die TimeZone erweitert? –