L
lack
Gast
Hallo!
Problem: ich habe eine Funktion, die ein Objekt des Typs AbstractProduct benötigt. ConcreteProduct1 ist von AbstractProduct abgeleitet (implementiert also die Funktion update), muss aber noch mit anotherImportantFunction parametrisiert werden.
Ich implementiere die Fabrikmethode folgendermaßen:
Mache ich jetzt
AbstractProduct myProduct = new ConcreteFactory(); so kann ich im Hauptprogramm die anotherImportantFunction() nicht mehr benutzen. Das ist ja eigentlich klar, da AbstractProduct die Funktion nicht implementiert.
Im main() habe ich einige Funktionen, die ein AbstractProduct-Objekt wegen update() benutzen müssen. Ich will aber ConcreteProduct1 anotherImportantFunction() nutzen, zum initialisieren. Das klappt so irgendwie nicht!
Ich muss zur Laufzeit verschiedene ConcreteProducts, die von AbstractProduct abgeleitet sind, parametrisieren. Die Parametierfunktionen haben alle unterschiedliche Signaturen, deswegen kann ich das nicht mit in AbstractProduct packen..
Ich kriege das Ganze nicht gebacken, vielleicht wisst ihr ja wo der Fehler liegen könnte.
Oder habt Tipps, wie ich das ganze geschickter implementieren kann.
Schönen Gruß!
lack
Problem: ich habe eine Funktion, die ein Objekt des Typs AbstractProduct benötigt. ConcreteProduct1 ist von AbstractProduct abgeleitet (implementiert also die Funktion update), muss aber noch mit anotherImportantFunction parametrisiert werden.
Ich implementiere die Fabrikmethode folgendermaßen:
Code:
public abstract class Factory {
public Factory() {
this.factoryMethod();
}
public abstract AbstractProduct factoryMethod();
}
public class ConcreteFactory extends Factory{
public AbstractProduct factoryMethod() {
return new ConcreteProduct1();
}
}
public abstract class AbstractProduct {
abstract public int update();
}
public class ConcreteProduct1 extends AbstractProduct {
public int update() {
// impl. von update
}
public int anotherImportantFunction() {
// impl. davon
}
}
AbstractProduct myProduct = new ConcreteFactory(); so kann ich im Hauptprogramm die anotherImportantFunction() nicht mehr benutzen. Das ist ja eigentlich klar, da AbstractProduct die Funktion nicht implementiert.
Im main() habe ich einige Funktionen, die ein AbstractProduct-Objekt wegen update() benutzen müssen. Ich will aber ConcreteProduct1 anotherImportantFunction() nutzen, zum initialisieren. Das klappt so irgendwie nicht!
Ich muss zur Laufzeit verschiedene ConcreteProducts, die von AbstractProduct abgeleitet sind, parametrisieren. Die Parametierfunktionen haben alle unterschiedliche Signaturen, deswegen kann ich das nicht mit in AbstractProduct packen..
Ich kriege das Ganze nicht gebacken, vielleicht wisst ihr ja wo der Fehler liegen könnte.
Oder habt Tipps, wie ich das ganze geschickter implementieren kann.
Schönen Gruß!
lack