Ich bin der Umsetzung der Strategie Muster:Java, Strategy-Muster, Generics und Rückgabetyp
public interface Stuff<T> {
T getStuff();
}
public class IntegerStuff implements Stuff<Integer> {
public Integer getStuff() { .. }
}
public class StringStuff implements Stuff<String> {
public String getStuff() { .. }
}
Nun, ich möchte einen "Kontext" verwenden, um die Strategie zu setzen und die Strategie Methode ausführen:
public class Context() {
private Stuff stuff;
public setStrategy(Stuff stuff) { this.stuff = stuff; }
public Object doStuff() { // ARGH!
return stuff.getStuff()
}
}
Wie kann ich generische verwenden, so dass der Typ der doStuff()
-Methode für die Context-Klasse vom gleichen Typ wie die verwendete Strategie sein kann?
Die Strategie Muster ermöglicht eine Art Blackbox Verhalten. Sie haben eine definierte Eingabe und eine definierte Ausgabe, aber was dazwischen passiert, entscheidet über die Strategie (die austauschbar sein sollte). Wie Sie die Ausgabe Ihrer Methode ändern möchten, denke ich, dass Strategie-Muster hier nicht die richtige Wahl ist – CRC
@CRC, yeah, ich denke, Sie haben Recht, ändern Rückgabetyp ändert den "Vertrag" – Luciano
Vielleicht kann dies auf eine andere Weise gelöst werden : Was versuchst du damit zu machen? – Fildor