T4ch0n4d3l
2008-08-07, 17:07:55
Hallo,
ich habe derzeit eine kleine Denksperre und hoffe, dass ihr mir eventuell etwas auf die Sprünge helfen könnt.
Ich habe 3 Klassen NeuronLayer, SynapseLayer und IOLayer, alle abgeleitet von der Superklasse AbstractLayer.
Die Layer haben sehr viele gemeinsame Funktionen, welche in AbstractLayer definiert sind. Jedoch hat jeder Layer auch eine Reihe eigene Funktionen, auf die ich von Zeit zu Zeit zugreifen muss.
Angenommen, ich habe eine Funktion
Component addLayer(AbstractLayer layer). Diese Funktion soll mir ein Layer in eine Component auflösen, abhängig von der konkreten Implementierung des Layers.
Da ich kein Freund von exzessiven instanceof und Typecasting bin, habe ich an das Visitor Pattern gedacht. Demzufolge habe ich ein Interface
interface Visitor {
void visit(NeuronLayer layer);
void visit(SynapseLayer layer);
void visit(IOLayer layer);
}
Nun hab ich aber das Problem, dass addLayer einen Rückgabewert hat. Wie kann ich den Rückgabewert innerhalb des Visitors setzen und läuft der Visitor synchron oder asynchron? Oder gibt es Alternativen zum Visitor ?
Ich möchte keine Funktion im Layer einbauen, die mir die Komponente liefert.
Danke im vorraus.
Markus
ich habe derzeit eine kleine Denksperre und hoffe, dass ihr mir eventuell etwas auf die Sprünge helfen könnt.
Ich habe 3 Klassen NeuronLayer, SynapseLayer und IOLayer, alle abgeleitet von der Superklasse AbstractLayer.
Die Layer haben sehr viele gemeinsame Funktionen, welche in AbstractLayer definiert sind. Jedoch hat jeder Layer auch eine Reihe eigene Funktionen, auf die ich von Zeit zu Zeit zugreifen muss.
Angenommen, ich habe eine Funktion
Component addLayer(AbstractLayer layer). Diese Funktion soll mir ein Layer in eine Component auflösen, abhängig von der konkreten Implementierung des Layers.
Da ich kein Freund von exzessiven instanceof und Typecasting bin, habe ich an das Visitor Pattern gedacht. Demzufolge habe ich ein Interface
interface Visitor {
void visit(NeuronLayer layer);
void visit(SynapseLayer layer);
void visit(IOLayer layer);
}
Nun hab ich aber das Problem, dass addLayer einen Rückgabewert hat. Wie kann ich den Rückgabewert innerhalb des Visitors setzen und läuft der Visitor synchron oder asynchron? Oder gibt es Alternativen zum Visitor ?
Ich möchte keine Funktion im Layer einbauen, die mir die Komponente liefert.
Danke im vorraus.
Markus