Hi,
ich habe eine Design-Frage. Angenommen wir haben folgende Beispielklasse:
Betrachte den folgenden Code:
Man stelle sich vor man hat weitere arithmetische Operationen und Arrays von values, die man manipulieren möchte. Mich stört hier, dass ich jedesmal wenn ich eine arithmetische Operation aufrufe, eine Abfrage machen muss, ob das entsprechende Array-Element ungleich
ist. Ein Ausweg wäre zusätzlich statische Methoden zu verwenden, etwa
Hier ist es hässlich, sowohl statische als auch Membermethoden mit der gleichen Funktionalität zu besiten. Würde ich komplett auf Membermethoden verzichten, so bräuchte ich statische Methoden, die das erste Argument verändern.
Wie würde hier denn unter der Bedingung, dass man bei einer arithmetischen Operation kein neues Objekt erzeugt ein gutes Design aussehen?
Beste Grüße
samosa
ich habe eine Design-Frage. Angenommen wir haben folgende Beispielklasse:
Java:
public class Value {
private double val;
public Value(double val) {
this.val = val;
}
public void add(Value value) {
if(value != null) {
this.val += val;
}
}
}
Betrachte den folgenden Code:
Java:
Value v = new Value(1);
Value[] values = {new Value(2), null, new Value(1)};
for(int i = 0; i < values.length; i++) {
if(value[i]!= null) {
values[i].add(v);
}
}
Man stelle sich vor man hat weitere arithmetische Operationen und Arrays von values, die man manipulieren möchte. Mich stört hier, dass ich jedesmal wenn ich eine arithmetische Operation aufrufe, eine Abfrage machen muss, ob das entsprechende Array-Element ungleich
Code:
null
Java:
public Value void add(Value u, Value v) {
if(u != null) {
return u.add(v);
}
return v;
}
Hier ist es hässlich, sowohl statische als auch Membermethoden mit der gleichen Funktionalität zu besiten. Würde ich komplett auf Membermethoden verzichten, so bräuchte ich statische Methoden, die das erste Argument verändern.
Wie würde hier denn unter der Bedingung, dass man bei einer arithmetischen Operation kein neues Objekt erzeugt ein gutes Design aussehen?
Beste Grüße
samosa
Zuletzt bearbeitet: