hi,
ich habe eine Klasse
die lauter statische Methoden für Operationen auf Vektoren besitz:
Die Klasse
ist also eine Art
-Klasse für Vektoren. Nun kann man die Methoden der Klasse
sowohl mutable als auch immutable machen. Eine mutable
würde beispielsweise das Ergebnis x+y der Variable x zuweisen und zurückliefern. Ein immutable
lässt die Parameter x und y unverändert.
Der Vorteil von den mutable-Methoden ist, dass nicht so viele neue Objekte erzeugt werden (die Methoden werden in meiner Applikation millionenfach aufgerufen). Allerdings brauche ich auch immutable Methoden.
Wie macht man das am saubersten? Zwei getrennte Klassen wie String und StringBuilder? In einer Klasse und anhand des Methodennamens deutlich machen, was mutable und was immutable ist? Auf Listen und eine Wrapper-Klasse für double[]-Arrays würde ich dabei gerne verzichten.
Wie würdet ihr das Problem lösen?
beste Grüße
samosa
ich habe eine Klasse
Code:
Vector
Code:
class Vector {
// Berechnet Skalarmultiplikation a*x und liefert Resultat zurück
static double[] mult(double a, double[] x) {...}
// Berechnet Addition x + y und liefert Resultat zurück
static double[] add(double[] x, double[] y) {...}
// Liefert die Länge des Vektors x zurück
static double norm(double[] x) {...}
// weitere Methoden
}
Die Klasse
Code:
Vektor
Code:
Math
Code:
Vektor
Code:
add(x, y)
Code:
add(x, y)
Der Vorteil von den mutable-Methoden ist, dass nicht so viele neue Objekte erzeugt werden (die Methoden werden in meiner Applikation millionenfach aufgerufen). Allerdings brauche ich auch immutable Methoden.
Wie macht man das am saubersten? Zwei getrennte Klassen wie String und StringBuilder? In einer Klasse und anhand des Methodennamens deutlich machen, was mutable und was immutable ist? Auf Listen und eine Wrapper-Klasse für double[]-Arrays würde ich dabei gerne verzichten.
Wie würdet ihr das Problem lösen?
beste Grüße
samosa