sah ich einige Stück Code wieStatische oder neue Instanz für jedes Objekt?
public class A {
public void doSomething(B b) {
b.addSometing("queue1", getDefault());
b.addSometing("queue2", getDefault());
b.addSometing("queue3", getDefault());
}
private C getDefault() {
C c = new C();
c.setAutoCreate(true);
c.setExired(false);
c.setDelay(3500);
return c;
}}
sieht, wenn wir C c
var setzen. (das ist Standard für alle Objekte der Klasse A) für jedes Objekt der Klasse A
, verwenden wir nur eine Menge Speicher für große Objekte der Klasse A
, vielleicht besser zu machen C c
statisch? Wir erstellen nur eine Instanz der Klasse C
für die gesamte Klasse und verwenden sie für jedes Objekt der Klasse A
. Wenn wir dies tun, nach diesem Code wird wie wie
public class A {
private static C c = new C();
static {
c.setAutoCreate(true);
c.setExired(false);
c.setDelay(3500);
}
public void doSomething(B b) {
b.addSometing("queue1", c);
b.addSometing("queue2", c);
b.addSometing("queue3", c);
}
}
ich denke, es besserer Weg, vielleicht bin ich falsch. Bitte geben Sie mir Ratschläge.
Der letzte Passt nicht so viel Sinn für mich, wenn Sie die gleiche Instanz von 'C' auf einer Karte für verschiedene Schlüssel hinzufügen, warum mit einem 'Map' gehen betrachten in der erste Platz, wenn Sie nur einen Wert für mehrere Schlüssel haben? – SomeJavaGuy
_Wenn Sie eine statische Instanz als Standard verwenden, sollte sie _immutable_ sein, sonst könnten Sie Nebenwirkungen bekommen. 'setAutocreate (true)' usw. sieht jedoch nicht unveränderlich aus. – Thomas
Wenn Sie das Objekt c in 'queue1' ändern, ändern sich auch die Objekte in 'queue2' und 'queue3'. Wenn dies akzeptabel ist, dann scheinen Ihre statischen Lösungen in Ordnung zu sein. – Jeet