Hi,
dann versuch es in RL (Real Life) zu übertragen. Was machen Fabriken für gewöhnlich? Sie produzieren Objekte, bestimmte Objekte. Eine Dönerfabrik zum Beispiel Dönerfleisch, eine Spielzeugfabrik zum Beispiel Holzklötze (ohne sonstige sonderliche Funktionsmerkmale) oder Plüschtiere.
In OO übertragen ist eine Factory ein oft eine Klasse die Methoden zur Produktion (Instantzierung) andererer Klassen (Objekte) anbietet.
class MyFactory
{
// das ist eine Fabrikmethode, die ein Objekt vom Typ MyObject prodzuiert
MyObject CreateMyObject()
{
return new MyObject();
// oder
return MyObject.CreateFromContext();
}
}
Factory-Methoden oder Fabrik-Methoden können aber auch zum Bleistift auch direkt auf dem eigentlich Objekt definiert werden, dann meistens statisch:
class MyObject
{
// das ist eine statische Fabrikmethode, die sich selbst prodzuiert
static MyObject CreateFromContext()
{
// erzeuge z.b. eine neue Instanz von MyObject, setze Properties und gib sie zurück
MyObject emmo = new MyObject();
// emmo.MyProperty = "HelloWorld";
// emmo.Initialize();
return emmo;
}
}
Du standardisierst dadurch die Instanzierung von deinen Objekten und kannst Regeln für selbige einfliessen lassen und deren Komplexität dann in der Fabrikmethode verstecken. Ansonsten hast du vielleicht viele wiederkehrende Codeblöcke à la
{
// das ist oft redundant
MyObject emmo = new MyObject();
emmo.MyProperty = "HelloWorld";
emmo.Initialize();
// und hier fängst an mit dem Objekt die eigentliche Arbeit zu machen
emmo.DoMyWork("Hello World");
}
Wenn du im Web nach Patterns suchst oder "Erich Gamma" wirst du sicher einiges an Literatur finden. Unter anderem gibt es auch im Archiv des Forums dazu Threads. :)
Ciao, Frank