Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

12.02.2004, 12:31

Begriffserklärungen gesucht: "Factory" + "foo

Hi!
Kann mir vielleicht mal jemand erklären, was der Begriff factory im Programmierbreich zu bedeuten hat.
Dann würd ich auch noch gerne wisse, warum viele leute beispielsfunktionen "foo" oder "foo bar" nennen.
Wäre nett wenn ihr das erklären könntet.

Anonymous

unregistriert

2

12.02.2004, 13:39

Der Begriff Factory Pattern (engl. für Fabrikmuster) kommt aus dem Bereich des Software Engineering und spezieller, aus dem Bereich der objektorientierten Programmierung (OOP).

Dieses Entwicklungsmuster definiert eine Klasse (in vereinzelten Fällen als Singleton-Pattern ausgelegt), die Objekte eines bestimmten Typs (siehe auch Klassen, Interfaces) produziert. Daher wird oft auch von Produzent (Producer) bzw. Bereitsteller (Provider) gesprochen.

Zu beachten ist, dass "Factories" die erzeugten Objekte als Objekt einer gemeinsamen Oberklasse oder einer Schnittstellendefinition (Interface) zurückgeben. Dadurch ist eine "Factory" in der Lage, verschiedene spezialisierte Klassen eines gemeinsamen Typs bzw. mit einer gemeinsamen Schnittstelle bereitzustellen.

Folgend ein Beispiel in der Programmiersprache Java. Es wird angenommen, dass es die drei Kontenarten Giro, Spar und Depot gibt, die durch die Klassen GiroKonto, SparKonto und DepotKonto dargestellt werden. Alle drei Kontenarten haben als gemeinsame Oberklasse die abstrakte Klasse Konto (alternativ können auch alle Klassen die Schnittstelle (interface) Konto implementieren).



public class KontoFactory
{
public final static int GIRO = 0;
public final static int SPAR = 1;
public final static int DEPOT = 2;


public Konto getInstance(final int kontoArt)
{
switch (kontoArt)
{
case GIRO:
{
return new GiroKonto();
break;
}
case SPAR:
{
return new SparKonto();
break;
}
case DEPOT:
{
return new DepotKonto();
break;
}
default:
{
throw new IllegalArgumentException("Kontoart nicht unterstuetzt.");
}
}
}
}

-------
Eine Metasyntaktische Variable ist ein Name in einem Beispiel, bzw. Beispielprogramm, der nur zur beispielhaften Erklärung verwendet wird. Ein Programmierer würde diesen Namen also nie in einem echten Programm verwenden.

Metasyntaktische Variablen haben Ihren Namen deshalb weil sie in einer höheren Sprachebene der Beschreibung eines Programms dienen (Metasprache).

Sie treten häufig in Serien auf und sind kulturspezifisch, so z.B.


foo, bar, baz, quux, quuux, ... mit Variationen am MIT
foo, bar, thud, grunt an der CMU
fred, jim, sheila, barney
zxc, spqr, wombat in Cambridge
foo, bar, zot in Finnland
toto, titi, tata, tutu in Frankreich
pippo, pluto, paperino in Italien
aap, noot, mies in den Niederlanden

zu finden auf http://www.net-lexikon.de/Metasyntaktische-Variable.html

3

12.02.2004, 20:57

danke für die erklärung! :)

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

4

12.02.2004, 22:06

Das Factory-Konzept ist eines der beliebtesten in der OOP Programmierung, wird vorallem eingesetzt für Objekte zu Managen (z.B. Gegner und NPCs) oder für GameStates und Resourcen.

Neben diesem Konzept gibts noch diverse andere, eines unter den bekanntesten Konzepten ist da wohl COM (Component Object Model) auf dem DirectX aufgebaut ist.

Andere Konzepte sind da noch:
CrystalSpace object architecture - stark vereinfachte Version von Microsoft's COM

XPCOM, wird vom Netscape-Browser verwendet, etwas weitreichender, z.b. auch call-by-name für scripting

Corba - Quasi der grosse Konkurrent von COM, bietet RPC, Exceptions und mehr, wird aber eher im profesionellen unix-Umfeld genutzt

Aber wie jeder weis: Alles hat seine vor und Nachteile und diese Liste ist oft (sehr) lang! :)

helium

Treue Seele

Beiträge: 180

Wohnort: NRW, Burscheid (nahe Köln)

  • Private Nachricht senden

5

13.02.2004, 12:48

Zitat

Das Factory-Konzept ist eines der beliebtesten in der OOP Programmierung, wird vorallem eingesetzt für Objekte zu Managen (z.B. Gegner und NPCs) oder für GameStates und Resourcen.

Natürlich hat sich die Gang of Four ausschließlich mit der Spieleentwickung befasst.

Zitat

Neben diesem Konzept gibts noch diverse andere, eines unter den bekanntesten Konzepten ist da wohl COM (Component Object Model) auf dem DirectX aufgebaut ist.


Hä? Factory is ein Design-Pattern der GoF, so wie Singleton, Adapter, Bridge, Facade, Command, Observer, Visitor, ...

COM hat damit gar nichts zu tun.

kimmi

Frischling

Beiträge: 4

Wohnort: Luebeck

Beruf: Software-Entwickler

  • Private Nachricht senden

6

18.02.2004, 09:31

Vielleicht wäre für das Design-Pattern Factory als Beispiel ein GUI-Manager ganz gut. Dort wird dann halt je nach Bedarf eine von der Basisklasse abgeleitete Widget-Klasse als Instanz erzeugt (z.b. Buttons, Dialoge, stammen alle vom Fenster ab).
Durch die Factory kann man das Ganze leichter portabel mittels eines Interfaces zum Erzeugen von GUI-Objekten unter verschiedenen Windows-Managern gestalten. Mehr dazu im Buch "Entwurfsmuster".

MfG Kimmi
Wer komplizierte Lösungen anbietet, hat das Problem nicht verstanden!

Werbeanzeige