Hi,
ich würde mir mal gerne Eure Meinung zu folgendem Design hören. Ich verwende dazu ein vereinfachendes Beispiel.
Ich habe eine abstrakte Klasse
, die ein Kommando mit Optionen realisiert.
Jede Unterklasse ist ein konkretes Kommando mit konkreten Optionen. Als konkrete Kommandos kann man sich beispielsweise Unix Kommandos wie
usw vorstellen, die jeweils verschiedene Optionen besitzen. Beispiel:
In einer Anwendung
wähle ich dann das gewünschte Kommando, setze die Optionen, die ich gerade brauche und lass dann das Kommando ausführen. Mal rufe ich in der Klasse
das eine mal das andere Kommando mit jeweils unterschiedlichen Optionen auf.
Was mich stört ist, dass ich in der Klasse
stets mitten im Code rumschreiben muss. Ich muss also die Zeile
immer mit dem passenden Kommando belegen. Im Grunde ist ja das Kommando selbst eine Option und kann dann zusammen mit den anderen Optionen übergeben werden.
Man könnte doch eine enum-Klasse
implementieren, deren Konstanten den realisierten Kommandoklassen entspricht. Dann könnte man eine Klasse
implementieren, die statische Methoden der folgenden Bauart besitzen:
Hierbei wird das im
bzw
spezifizierte Kommando-Objekt zurückgeliefert.
Macht man das so? Oder wie würdet Ihr das machen?
Beste Grüße
samosa
ich würde mir mal gerne Eure Meinung zu folgendem Design hören. Ich verwende dazu ein vereinfachendes Beispiel.
Ich habe eine abstrakte Klasse
Code:
Command
Java:
abstract class Command {
String options;
Command(String options) {
// mach was gescheites
}
abstract void execute();
// weitere Methoden
}
Jede Unterklasse ist ein konkretes Kommando mit konkreten Optionen. Als konkrete Kommandos kann man sich beispielsweise Unix Kommandos wie
Code:
ls, cp, rm
Java:
class Remove extends Command {
Remove(String options) {
super(options);
// ...
}
void execute() {
// führt rm mit gesetzten Optionen aus
}
}
In einer Anwendung
Code:
App
Code:
App
Was mich stört ist, dass ich in der Klasse
Code:
App
Code:
Command c = new Remove(options)
Man könnte doch eine enum-Klasse
Code:
CommandType
Code:
CommandSelector
Code:
// Typ des Kommandos und options separat
static Command select(CommandType type, String options);
// Typ des Kommandos in options:
static Command select(String options);
Hierbei wird das im
Code:
typ
Code:
options
Macht man das so? Oder wie würdet Ihr das machen?
Beste Grüße
samosa