SlideShare ist ein Scribd-Unternehmen logo
1 von 45
Downloaden Sie, um offline zu lesen
Source: https://www.kisspng.com/png-factory-base-24825/download-png.html
Source: https://www.kisspng.com/png-factory-base-24825/download-png.html
„Definiere eine Klassenschnittstelle zum
Erzeugen eines Objekts, aber lasse Unterklassen
entscheiden, welche Klasse instanziiert werden
soll. Factory-Methods ermöglichen es einer
Klasse, die Erzeugung von Objekten an
Unterklassen zu delegieren.“
• Entkopplung des Clients von der konkreten Instanziierung
einer Klasse
• Trennung von Objektverwaltung und Objektherstellung
• Factory-Methoden erübrigen die Notwendigkeit,
anwendungsspezifische Klassen in den Code einzubinden. Der
Code behandelt nur die Schnittstelle.
• Eine Klasse kann die Klasse der Objekte, die sie erstellen
muss, nicht vorhersehen.
• Eine Klasse möchte, dass ihre Unterklassen die zu
erstellenden Objekte definieren.
• Klassen delegieren die Verantwortung an eine von mehreren
Helfer-Unterklassen, und man möchte wissen, welche Helfer-
Unterklasse der Delegierte ist.
Idee und Fotos: https://www.philipphauer.de/study/se/design-pattern/factory-method.php
• Geringe Kohäsion
• Geringe Wiederverwendbarkeit
• Für Erweiterungen am Programmportfolio muss der
bestehende Code geändert werden.
Entwürfe sollten für Erweiterungen offen, aber für
Veränderungen geschlossen sein.
Die Logik zur Programmerstellung in einer
Klasse kapseln (Factory)
•Kohäsionsgewinn durch Trennung der Objekterstellung
von der Objektverarbeitung
•Wiederverwendbarkeit der Factory
•Zentrale Stelle für Wartung und Erweiterung
Die Objekterstellung (createOfficeProgramm) kann direkt
aufgerufen werden, und die notwendigen
Verarbeitungsschritte der holeApp()-Methode umgangen
werden.
• Die Subklasse entscheidet welches Objekt erstellt wird.
• Softwareshop delegiert die Objektinstanziierung an seine Subklasse.
Von außen ist die Methode unsichtbar (protected). Somit ist
gewährleistet, dass der Verarbeitungsprozess immer durchgeführt
wird.
Quelle: https://bit.ly/2LJEUCl
Creator – abstrakter SoftwareShop
ConcreteCreator – konkrete OfficeSuiteFactories
Product – abstrakte OfficeProgramm-Schnittstelle
ConcreteProduct – konkrete Programme
Quelle: https://bit.ly/2LJEUCl
• Herstellungsprozess ist von konkreter Implementierung getrennt
• Wiederverwendbarkeit und Konsistenz durch:
• Kapselung des Objekterstellungscodes (zentrale Schnittstelle für Client)
• Kapselung des allgemeinen Herstellungscodes in der Creator Klasse
• Erweiterbarkeit, Austauschbarkeit, Flexibilität durch:
• Problemlosen Einführen neuer Produkte und Ersteller
• Enge Kopplung eines konkreten Creators und konkreten Products
• Für jedes neue Produkt muss ein neuer Creator geschrieben werden
• Authentifizierungssysteme:
• Für jeden User wird nach dem Login ein Ticket erstellt, das seine
Rechte im System repräsentiert.
• TicketFactory -> createTicket()-Methode
• Pizzeria:
• Pizzeria erstellt je nach Parameter verschiedene Pizzen.
• Regionale Wünsche -> spezielle Pizzen
• Neue Pizzasorten und Pizzerias können ins System integriert
werden
• Frameworks, Klassenbibliotheken
• Backend: Java JAX-RS REST-Schnittstelle zum Speichern der
Eigenschaften von Immobilien
• Admin-Anwendung: C# WPF Anwendung zum Hinzufügen,
Ändern, Löschen von Immobilien
• Client-Anwendung: Typescript Angular Anwendung zum
Anzeigen der Immobilien
Code: https://github.com/mhinterdorfer/FactoryMethod
• Es gibt drei Arten von Immobilien: Apartment, House und Villa
• Jeder Ort (Factory) erstellt die Immobilien nach den aktuellen
Preisen.
• Neue Orte können einfach hinzugefügt werden, in dem die
Factory Klasse abgeleitet wird.
Code: https://github.com/mhinterdorfer/FactoryMethod
Code: https://github.com/mhinterdorfer/FactoryMethod

Weitere ähnliche Inhalte

Ähnlich wie Factory Method Design Pattern

Einstieg in das Windows Installer XML (WiX) ToolSet
Einstieg in das Windows Installer XML (WiX) ToolSetEinstieg in das Windows Installer XML (WiX) ToolSet
Einstieg in das Windows Installer XML (WiX) ToolSetRalf Abramowitsch
 
2006 - Basta!: Web 2.0 mit asp.net 2.0
2006 - Basta!: Web 2.0 mit asp.net 2.02006 - Basta!: Web 2.0 mit asp.net 2.0
2006 - Basta!: Web 2.0 mit asp.net 2.0Daniel Fisher
 
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application VirtualizationDesktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application VirtualizationGWAVA
 
Fanstatic pycon.de 2012
Fanstatic pycon.de 2012Fanstatic pycon.de 2012
Fanstatic pycon.de 2012Daniel Havlik
 
Automatische Erstellung einer SharePoint 2013 Entwicklungsumgebung in Microso...
Automatische Erstellung einer SharePoint 2013 Entwicklungsumgebung in Microso...Automatische Erstellung einer SharePoint 2013 Entwicklungsumgebung in Microso...
Automatische Erstellung einer SharePoint 2013 Entwicklungsumgebung in Microso...Sebastian Huppmann
 
Nooku, Molajo & Co - Joomla! Distributionen. Oder Forks.
Nooku, Molajo & Co - Joomla! Distributionen. Oder Forks.Nooku, Molajo & Co - Joomla! Distributionen. Oder Forks.
Nooku, Molajo & Co - Joomla! Distributionen. Oder Forks.David Jardin
 
Trivadis triCast Oracle Centrally Managed Users 18/19c
Trivadis triCast Oracle Centrally Managed Users 18/19cTrivadis triCast Oracle Centrally Managed Users 18/19c
Trivadis triCast Oracle Centrally Managed Users 18/19cStefan Oehrli
 
INNOQ Tech Lunch: Design Systems mit Storybook & Angular
INNOQ Tech Lunch: Design Systems mit Storybook & AngularINNOQ Tech Lunch: Design Systems mit Storybook & Angular
INNOQ Tech Lunch: Design Systems mit Storybook & AngularAndreas Wissel
 
Was kommt nach den SPAs
Was kommt nach den SPAsWas kommt nach den SPAs
Was kommt nach den SPAsQAware GmbH
 
Server Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM ServerServer Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM ServerSandro Sonntag
 
JTL-Connector | Entwicklung neuer Schnittstellen und Anbindung weiterer Platt...
JTL-Connector | Entwicklung neuer Schnittstellen und Anbindung weiterer Platt...JTL-Connector | Entwicklung neuer Schnittstellen und Anbindung weiterer Platt...
JTL-Connector | Entwicklung neuer Schnittstellen und Anbindung weiterer Platt...JTL-Software
 
Gerade genug Architektur vorneweg - Zur eigenen Architektur-Vision in 12 Minuten
Gerade genug Architektur vorneweg - Zur eigenen Architektur-Vision in 12 MinutenGerade genug Architektur vorneweg - Zur eigenen Architektur-Vision in 12 Minuten
Gerade genug Architektur vorneweg - Zur eigenen Architektur-Vision in 12 MinutenRoland Mast
 
Creative codingday 2_10012014_vor
Creative codingday 2_10012014_vorCreative codingday 2_10012014_vor
Creative codingday 2_10012014_vorJeongHo Park
 
Softwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha NightSoftwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha NightChristinaLerch1
 
HCL Domino 14 - Leap 1.1.2 - DNUG Stammtisch Wien
HCL Domino 14 - Leap 1.1.2 - DNUG Stammtisch Wien HCL Domino 14 - Leap 1.1.2 - DNUG Stammtisch Wien
HCL Domino 14 - Leap 1.1.2 - DNUG Stammtisch Wien DNUG e.V.
 

Ähnlich wie Factory Method Design Pattern (20)

Einstieg in das Windows Installer XML (WiX) ToolSet
Einstieg in das Windows Installer XML (WiX) ToolSetEinstieg in das Windows Installer XML (WiX) ToolSet
Einstieg in das Windows Installer XML (WiX) ToolSet
 
CodeFluent Entities and AppSofa
CodeFluent Entities and AppSofaCodeFluent Entities and AppSofa
CodeFluent Entities and AppSofa
 
2006 - Basta!: Web 2.0 mit asp.net 2.0
2006 - Basta!: Web 2.0 mit asp.net 2.02006 - Basta!: Web 2.0 mit asp.net 2.0
2006 - Basta!: Web 2.0 mit asp.net 2.0
 
ASP.NET Core Security
ASP.NET Core SecurityASP.NET Core Security
ASP.NET Core Security
 
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application VirtualizationDesktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
 
Fanstatic pycon.de 2012
Fanstatic pycon.de 2012Fanstatic pycon.de 2012
Fanstatic pycon.de 2012
 
Schnelleinstieg in Angular
Schnelleinstieg in AngularSchnelleinstieg in Angular
Schnelleinstieg in Angular
 
Automatische Erstellung einer SharePoint 2013 Entwicklungsumgebung in Microso...
Automatische Erstellung einer SharePoint 2013 Entwicklungsumgebung in Microso...Automatische Erstellung einer SharePoint 2013 Entwicklungsumgebung in Microso...
Automatische Erstellung einer SharePoint 2013 Entwicklungsumgebung in Microso...
 
Nooku, Molajo & Co - Joomla! Distributionen. Oder Forks.
Nooku, Molajo & Co - Joomla! Distributionen. Oder Forks.Nooku, Molajo & Co - Joomla! Distributionen. Oder Forks.
Nooku, Molajo & Co - Joomla! Distributionen. Oder Forks.
 
Trivadis triCast Oracle Centrally Managed Users 18/19c
Trivadis triCast Oracle Centrally Managed Users 18/19cTrivadis triCast Oracle Centrally Managed Users 18/19c
Trivadis triCast Oracle Centrally Managed Users 18/19c
 
INNOQ Tech Lunch: Design Systems mit Storybook & Angular
INNOQ Tech Lunch: Design Systems mit Storybook & AngularINNOQ Tech Lunch: Design Systems mit Storybook & Angular
INNOQ Tech Lunch: Design Systems mit Storybook & Angular
 
Was kommt nach den SPAs
Was kommt nach den SPAsWas kommt nach den SPAs
Was kommt nach den SPAs
 
Server Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM ServerServer Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM Server
 
JTL-Connector | Entwicklung neuer Schnittstellen und Anbindung weiterer Platt...
JTL-Connector | Entwicklung neuer Schnittstellen und Anbindung weiterer Platt...JTL-Connector | Entwicklung neuer Schnittstellen und Anbindung weiterer Platt...
JTL-Connector | Entwicklung neuer Schnittstellen und Anbindung weiterer Platt...
 
BizSpark goes Cloud
BizSpark goes CloudBizSpark goes Cloud
BizSpark goes Cloud
 
Gerade genug Architektur vorneweg - Zur eigenen Architektur-Vision in 12 Minuten
Gerade genug Architektur vorneweg - Zur eigenen Architektur-Vision in 12 MinutenGerade genug Architektur vorneweg - Zur eigenen Architektur-Vision in 12 Minuten
Gerade genug Architektur vorneweg - Zur eigenen Architektur-Vision in 12 Minuten
 
Creative codingday 2_10012014_vor
Creative codingday 2_10012014_vorCreative codingday 2_10012014_vor
Creative codingday 2_10012014_vor
 
JavaScript Architektur
JavaScript ArchitekturJavaScript Architektur
JavaScript Architektur
 
Softwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha NightSoftwerkskammer Chemnitz Special Pecha Kucha Night
Softwerkskammer Chemnitz Special Pecha Kucha Night
 
HCL Domino 14 - Leap 1.1.2 - DNUG Stammtisch Wien
HCL Domino 14 - Leap 1.1.2 - DNUG Stammtisch Wien HCL Domino 14 - Leap 1.1.2 - DNUG Stammtisch Wien
HCL Domino 14 - Leap 1.1.2 - DNUG Stammtisch Wien
 

Factory Method Design Pattern

  • 3. „Definiere eine Klassenschnittstelle zum Erzeugen eines Objekts, aber lasse Unterklassen entscheiden, welche Klasse instanziiert werden soll. Factory-Methods ermöglichen es einer Klasse, die Erzeugung von Objekten an Unterklassen zu delegieren.“
  • 4. • Entkopplung des Clients von der konkreten Instanziierung einer Klasse • Trennung von Objektverwaltung und Objektherstellung • Factory-Methoden erübrigen die Notwendigkeit, anwendungsspezifische Klassen in den Code einzubinden. Der Code behandelt nur die Schnittstelle.
  • 5.
  • 6. • Eine Klasse kann die Klasse der Objekte, die sie erstellen muss, nicht vorhersehen. • Eine Klasse möchte, dass ihre Unterklassen die zu erstellenden Objekte definieren. • Klassen delegieren die Verantwortung an eine von mehreren Helfer-Unterklassen, und man möchte wissen, welche Helfer- Unterklasse der Delegierte ist.
  • 7. Idee und Fotos: https://www.philipphauer.de/study/se/design-pattern/factory-method.php
  • 8.
  • 9.
  • 10. • Geringe Kohäsion • Geringe Wiederverwendbarkeit • Für Erweiterungen am Programmportfolio muss der bestehende Code geändert werden. Entwürfe sollten für Erweiterungen offen, aber für Veränderungen geschlossen sein.
  • 11. Die Logik zur Programmerstellung in einer Klasse kapseln (Factory)
  • 12.
  • 13.
  • 14.
  • 15.
  • 16. •Kohäsionsgewinn durch Trennung der Objekterstellung von der Objektverarbeitung •Wiederverwendbarkeit der Factory •Zentrale Stelle für Wartung und Erweiterung
  • 17.
  • 18.
  • 19. Die Objekterstellung (createOfficeProgramm) kann direkt aufgerufen werden, und die notwendigen Verarbeitungsschritte der holeApp()-Methode umgangen werden.
  • 20.
  • 21.
  • 22. • Die Subklasse entscheidet welches Objekt erstellt wird. • Softwareshop delegiert die Objektinstanziierung an seine Subklasse. Von außen ist die Methode unsichtbar (protected). Somit ist gewährleistet, dass der Verarbeitungsprozess immer durchgeführt wird.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 36. Creator – abstrakter SoftwareShop ConcreteCreator – konkrete OfficeSuiteFactories Product – abstrakte OfficeProgramm-Schnittstelle ConcreteProduct – konkrete Programme Quelle: https://bit.ly/2LJEUCl
  • 37. • Herstellungsprozess ist von konkreter Implementierung getrennt • Wiederverwendbarkeit und Konsistenz durch: • Kapselung des Objekterstellungscodes (zentrale Schnittstelle für Client) • Kapselung des allgemeinen Herstellungscodes in der Creator Klasse • Erweiterbarkeit, Austauschbarkeit, Flexibilität durch: • Problemlosen Einführen neuer Produkte und Ersteller
  • 38. • Enge Kopplung eines konkreten Creators und konkreten Products • Für jedes neue Produkt muss ein neuer Creator geschrieben werden
  • 39. • Authentifizierungssysteme: • Für jeden User wird nach dem Login ein Ticket erstellt, das seine Rechte im System repräsentiert. • TicketFactory -> createTicket()-Methode
  • 40. • Pizzeria: • Pizzeria erstellt je nach Parameter verschiedene Pizzen. • Regionale Wünsche -> spezielle Pizzen • Neue Pizzasorten und Pizzerias können ins System integriert werden
  • 42. • Backend: Java JAX-RS REST-Schnittstelle zum Speichern der Eigenschaften von Immobilien • Admin-Anwendung: C# WPF Anwendung zum Hinzufügen, Ändern, Löschen von Immobilien • Client-Anwendung: Typescript Angular Anwendung zum Anzeigen der Immobilien Code: https://github.com/mhinterdorfer/FactoryMethod
  • 43. • Es gibt drei Arten von Immobilien: Apartment, House und Villa • Jeder Ort (Factory) erstellt die Immobilien nach den aktuellen Preisen. • Neue Orte können einfach hinzugefügt werden, in dem die Factory Klasse abgeleitet wird. Code: https://github.com/mhinterdorfer/FactoryMethod
  • 44.