factory functions

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
RainBowBender
User
Beiträge: 53
Registriert: Dienstag 6. April 2004, 10:33

factory functions

Beitragvon RainBowBender » Montag 26. Juli 2004, 10:55

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.
Benutzeravatar
fs111
User
Beiträge: 170
Registriert: Samstag 15. November 2003, 11:42
Kontaktdaten:

Beitragvon fs111 » Montag 26. Juli 2004, 12:26

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
Pydoc-Integration in vim - Feedback willkommen: http://www.vim.org/scripts/script.php?script_id=910
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Montag 26. Juli 2004, 12:29

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

Code: Alles auswählen

#!/usr/bin/env python
import this

Wer ist online?

Mitglieder in diesem Forum: __deets__, Bing [Bot], Google [Bot], markjohannes