Seite 1 von 1

factory functions

Verfasst: Montag 26. Juli 2004, 10:55
von RainBowBender
Hallo,

welchen Sinn haben eigentlich Factory Functions?

Ich stoße immer wieder auf diese Funktionenen in der Python API, z.B. open() um eine Datei zu erstellen, im Modul threading threading.Lock() das ein thread.lock objekt erstellt, usw.

Verfasst: Montag 26. Juli 2004, 12:26
von fs111
Eine Factory benutzt man normalerweise dann, wenn man im Code (also während des Schreibens) noch nicht weiß, was für einen Typ das Objekt haben wird, welches man braucht/zurück geliefert bekommt. In Java wird dieses z.B. gerne bei den XML-Parsern gemacht, da man verschiedene benutzen kann, der Code aber mit allen funktionieren soll. Deshalb hat Sun einige Interfaces entworfen, die alle diese Parser implementieren, so dass man den Code mit allen verwenden kann. Genauso kann man sich das in Python vorstellen, so dass man eben nicht weiß, welches konkrete Objekt man hat, aber eben z.B. eines, welches von einer genau definierten OBerklasse erbt.

fs111

Verfasst: Montag 26. Juli 2004, 12:29
von Dookie
Hi,

Mir fallen auf Anhieb 3 mögliche Einsatzgebiete für Factory Functions ein.
1. als Wrapper. Also um z.B. sehr komplexe Aufrufparameter einer Klasse zu vereinfachen, siehe z.B. das Modul NumArray bzw Numeric.
2. um abhängig von den Parametern Objekte unterschiedlicher Klassen zu erstellen.
3. um eine definierte Schnittstelle zu schaffen, die unabhängig von der Klassendefinition ist.


Gruß

Dookie

P.S.: open ist (noch) keine Factory Function sondern einfach ein alias zu File