Unterschied zwischen Factory und Factory Method
Robert R.
- programmiertechnik
Hallo,
was ist der Unterschied zwischen Factory und Factory Method?
Factory Method hat für das Produkt und die Frabrik je eine Schnittstelle und je eine Implementierung. Die Implementierung ist nicht wild, hab ich verstanden...
Laut meinem Sciprt gehört Factory Method zu GoF, aber Factory gehört nicht zur GoF (Viererbande)... was ist der EXAKTE unterschied der beiden Pattern?
LG
Salvete,
was ist der EXAKTE unterschied der beiden Pattern?
Der 3. Buchstaqbe von links!
Jetzt mal im Ernst, WAS denkst du fuer Antworten zu bekommen, wenn du
den Sachverhalt so miserabel beschreibst?
MfG,
Sympatisant
Hallo Robert,
Beide Muster wurden in besagtem GoF-Buch beschrieben.
Beide Muster dienen der Erzeugung von Instanzen, haben aber einen leicht unterschiedlichen Zweck.
Unter der Fabrikmethode wird in der Praxis wohl verschiedenes verstanden. Oft meint das einfach eine statische Methode zur Instanzierung einer Klasse, die im wesentlichen nur verwendet wird, weil man damit etwas mehr Flexibilität bei der Implementierung und Bennenung hat als bei einem normalen Konstruktor.
Nach GoF ist (meiner Erinnerung nach) eine Fabrikmethode eine abstrakte Methode, die dazu dient, die Erzeugung von benötigten Instanzen an eine abgeleitete Klasse zu delegieren.
Beliebtes Auto-Beispiel:
public abstract class Auto {
protected abstract Motor createMotor();
}
public Käfer extends Auto {
protected Motor createMotor() {
return new MotorImpl();
}
}
Eine Fabrik ist hingegen eine Schnittstelle, die nur der Erzeugung von Instanzen eines Typs dient. Man kann eine Fabrikmethode im Prinzip durch die Verwendung einer Fabrik ersetzen:
public abstract class Auto {
public Auto(MotorFabrik fabrik) {}
}
public interface MotorFabrik {
Motor createMotor();
}
public class Käfer extends Auto {
public Käfer() {
super(new MotorFabrikImpl());
}
}
Die Fabrik ermöglicht mehr Flexibilität, da man die Logik für die Instanzierung irgendwo unterbringen kann und das nicht unbedingt in der abgeleiteten Klasse tun muss. Dafür ist das Muster aber auch etwas Aufwendiger. Meist verwendet man Fabrikmethoden, wenn eine Klasse ohnehin dazu gedacht ist, erweitert zu werden und die abgeleitete Klasse typischerweise bestimmt, welche Klasse instanziert werden muss.
Die Fabrik verwendet man hingegen, wenn man die zu instanierende Klasse über einen Parameter festlegen möchte.
Im Übrigen ist es durchaus sinnvoll das GoF-Buch tatsächlich mal zu lesen ;-)
Grüße
Daniel
Danke, hab es nun verstanden.