04.11.2014 Aufrufe

Abstract Factory Struktur und Beispiel

Abstract Factory Struktur und Beispiel

Abstract Factory Struktur und Beispiel

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>Abstract</strong> <strong>Factory</strong><br />

Client<br />

<br />

<strong>Factory</strong><br />

createA()<br />

createB()<br />

Concrete<br />

Product A1<br />

doIt()<br />

<br />

Product A<br />

doIt()<br />

Concrete<br />

Product A2<br />

doIt()<br />

Concrete<br />

<strong>Factory</strong>1<br />

createA()<br />

createB()<br />

Concrete<br />

<strong>Factory</strong>2<br />

createA()<br />

createB()<br />

<br />

Product B<br />

doItAlso()<br />

class <strong>Factory</strong>1 <strong>Factory</strong>2 {<br />

Product class A Client createA {<br />

() {<br />

return<br />

<strong>Factory</strong> new<br />

f; Concrete<br />

Product A, Product<br />

B;<br />

A1(); A2();<br />

} f= new <strong>Factory</strong>1();<br />

Product A= B f.createA(); createB () B= { f.createB();<br />

return<br />

}<br />

new Concrete Product B1(); B2();<br />

}<br />

}<br />

Concrete<br />

Product B1<br />

doItAlso()<br />

Concrete<br />

Product B2<br />

doItAlso()


Bike <strong>Factory</strong><br />

Bike<br />

<br />

Parts<strong>Factory</strong><br />

createFrame()<br />

createBell()<br />

MountainBike<br />

Frame<br />

paintFrame()<br />

<br />

Frame<br />

paintFrame()<br />

CityBike<br />

Frame<br />

paintFrame()<br />

MountainBike<br />

Parts<br />

createFrame()<br />

createBell()<br />

CityBike<br />

Parts<br />

createFrame()<br />

createBell()<br />

class MountainBikeParts CityBikeParts implements implements Parts<strong>Factory</strong> Parts<strong>Factory</strong> { {<br />

Frame createFrame() (){{<br />

class return Client new { MountainBikeFrame();<br />

CityBikeFrame();<br />

} Parts<strong>Factory</strong> f; Frame frame, Bell bell;<br />

Bell f= new createBell() MountainBikeParts();<br />

{<br />

frame return = new f.createFrame(); CityBikeBell();<br />

MountainBikeBellI(); bell= f.createBell();<br />

}<br />

}<br />

}<br />

MountainBike<br />

Bell<br />

ringBell()<br />

<br />

Bell<br />

ringBell()<br />

CityBike<br />

Bell<br />

ringBell()


Motivation - <strong>Beispiel</strong>e<br />

• Pluggable look and feel von Swing<br />

• client code soll vollständig unabhägig davon sein, welche<br />

Produktefamilie gewählt wird<br />

• Menü in Restaurants (Französisches, Amerikanisches, Italienisches etc.)<br />

• Testversionen, Versionsupdates (neuer Konstruktor mit neuen<br />

Parametern, ev. Parameter unterschiedlich, ob bspw. Proxy für ein<br />

remote Objekt, maintenance window)<br />

• Interface für das Instanzieren von Objekten<br />

• Erzeugen von Familien von zusammengehörigen Objekten<br />

• Unabhängigkeit von konkreten Implementierungen<br />

• Konfiguration des Systems mit einer konkreten Fabrik<br />

• Erweiterbarkeit durch weitere Implementierungen (weitere<br />

Produktefamilien)<br />

• Strategie für das Erzeugen von Objekten

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!