Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05.

Ähnliche Dokumente
Erzeugungsmuster. Kapselung der Objekt-Erzeugung

Entwurfsmuster (Design Patterns)

Objektorientierte und Funktionale Programmierung SS 2014

Ein Entwurfsmuster der GoF. vorgestellt von. Sigrid Weil 16. Januar 2008

Wahlpflichtfach Design Pattern

Design Patterns. 3. Juni 2015

Entwurfsprinzip. Entwurfsprinzip

Objektorientierteund FunktionaleProgrammierung

185.A Software-Entwurfsmuster 1 OOP. Software-Entwurfsmuster

Design Patterns. (Software-Architektur) Prof. Dr. Oliver Braun. Letzte Änderung: :12. Design Patterns 1/26

Einführung in die Informatik II

Analyse und Modellierung von Informationssystemen

Entwurfsmuster. Die Entwurfsmuster Observer, State und Singleton am Beispiel einer Digital-Uhr

Analyse und Modellierung von Informationssystemen

Design Patterns II. Der Design Muster Katalog. Prof. Dr. Nikolaus Wulff

Software-Entwurfsmuster (weitere) A01 OOP. Software-Entwurfsmuster (weitere)

Entwurfsmuster und Frameworks Singleton

::Zweck. Sicherstellung, dass nur eine Instanz einer bestimmten Klasse existiert

Java für Bauingenieure

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Software-Entwurfsmuster

Entwurfsmuster. Rainer Schmidberger

Software Engineering II (IB) Design Patterns

Lukas Klich. Projektgruppe SHUTTLE. Seminar: Entwurfsmuster Lukas Klich/Projektgruppe SHUTTLE Seite: 1. Entwurfsmuster

Objekt-orientierte Programmierung

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Entwurfsmuster. Tao Zhang Technische Universität München Lehrstuhl für Angewandete Softwaretechnik

Design Pattern. Motivation, Beispiel Definition "Das" Buch der Gang of Four Ausführliches Beispiel: Facade Beispiele. Aufgabe

Praxisbuch Objektorientierung

Software Engineering II (IB) Design Patterns

Factory Method Pattern

Überblick FBC SNW Zusammenfassung. Entwurfsmuster. Eine Einführung. Botond Draskoczy. Marcus Vitruvius Pollio

Software Engineering. 7. Entwurfsmuster

Behavioral Patterns. Seminar Software-Entwurf WS 04/05. Przemyslaw Dul

Objektorientierte Programmierung III

Software Design basierend auf dem Plug-In Konzept

Verhaltensmuster. Entwurfsmuster - Design Patterns. HAW Hamburg Fakultät Technik und Informatik Department Informations- und Elektrotechnik

Entwurfsmuster. Marc Monecke

Factory Patterns und deren Auswirkung auf die Softwarearchitektur in der Praxis

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Objektorientierte Programmierung (OOP)

Programmierkurs C++ Abstrakte Klassen und Methoden

3. Entwurfsmuster zur Entkopplung von Modulen

3. Entwurfsmuster zur Entkopplung von Modulen. Übersicht zu Entwurfsmustern

Vererbung und Polymorphie

Entwurfsmuster Martin Fesser 00IN

Entwurfsmuster in Java

Objektorientierte Programmierung

Objektorientierte PL/SQL-Entwicklung Ein Erfahrungsbericht aus Sicht von JAVA-Entwicklern

Inhalt. Design patterns Kernbereiche Creational patterns Factory method Abstract Factory Builder Structural patterns Adapter Facade Decorator

Implementieren von Klassen

Design Patterns I. Observer, Listener & MVC

Seminar Software Design Pattern

Software Engineering Entwurfsmuster (update: 11.6.)

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Einführung in die Programmiersprache Java II

Software-Architektur Design Patterns

Programmieren in Java

Einstieg in die Informatik mit Java

DESIGN'PATTERN'2011. November. Abstract Factory & Factory Method BEARBEITET VON INHALT [1] Christoph Süsens

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Universität Bremen. Entwurfsmuster. Thomas Röfer. Wettbewerb Motivation Erzeugende Muster Strukturelle Muster Verhaltensmuster

Objektorientierte Programmierung Teil 1: Einführung

Factory Method (Virtual Constructor)

SE Besprechung. Übung 4 Architektur, Modulentwurf

Beispiel: Zwischen der Oberklasse und der abgeleiteten Klasse besteht eine ist ein Beziehung. Eine abgeleitete Klasse stellt eine Spezialisierung der

Tafelübung 07 Algorithmen und Datenstrukturen

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

Theorie zu Übung 8 Implementierung in Java

Model-View-Controller

Software Engineering. 10. Entwurfsmuster II. Franz-Josef Elmer, Universität Basel, HS 2015

OOP. Kapselung: Gruppierung von Daten und Funktionen als Objekte. Definieren eine Schnittstelle zu diesen Objekten.

Structural Patterns. B. Sc. Andreas Meißner

Grundlagen Polymorphismus Eigenschaften virtueller Klassen Mehrfachvererbung bei ROOT. Mehrfache Vererbung. Daniel Beneckenstein. 21.

Programmierkurs Java

Vorlesung Datenstrukturen

Algorithmen und Datenstrukturen

6. Globalübung (zu Übungsblatt 8)

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

Software- /Systemarchitektur

class Mitarbeiter {...} class AussendienstMitarbeiter extends Mitarbeiter {...} class InnendienstMitarbeiter extends Mitarbeiter {...

Programmiermethodik 3. Klausur Lösung

Tutorium Softwaretechnik I

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0

Effizientes Programmieren

Effizientes Programmieren

Entwurfsmuster - Iterator

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.

Th. Letschert OOP 2 2. Geheimnisprinzip und Sichtbarkeitsbeziehungen

Objektorientierte Programmierung mit Java

5.5.8 Öffentliche und private Eigenschaften

Vererbung & Schnittstellen in C#

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

Architektur-Grobstruktur: Framework

Javakurs für Anfänger

Vererbung, Polymorphie

Untertypen, Vererbung, Sichtbarkeit A01 OOP. Untertypen, Vererbung, Sichtbarkeit

Objektorientes Design & Programm

Schnittstellen und. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda

Einstieg in die Informatik mit Java

Transkript:

Creational Patterns Seminar Software-Entwurf WS 2004/05 Thomas Liro <thomas@liro.info>

Inhaltsüberblick Einordnung des Themas Beschreibung von Design Pattern Auswahl von Design Patterns Was sind Creational Patterns? Creational Patterns Singleton Factory Method Builder Abstrakt Factory Beziehungen zwischen Creational Patterns Zusammenfassung 2

Einordnung des Themas 3

Einordnung des Themas Design Patterns Creational Patterns Structural Patterns z.b. Model-View-Controller Behavior Patterns z.b. Observer Pattern Other Patterns 4

Beschreibung von Design Patterns Pattern-Schablone Pattern-Name Vermittelt knapp und präzise Zweck Wozu dient das Pattern? Entwurf Welcher Struktur folgt das Muster? (UML) Implementierung Wie wird das Pattern implementiert? (Java-Code) Vorteile Welche Vorteile entstehen durch die Anwendung? Nachteile Und welche Nachteile? Anwendungsszenario Beispiel für die Anwendung des Patterns 5

Auswahl von Design Patterns Welches Pattern ist das Richtige? Antwort: Problem auf Pattern eingrenzen Folgende Fragen helfen dabei: Welchen Zweck verfolgt das Pattern? In welcher Beziehung miteinander stehen in Frage kommende Muster? Welche Aufgabe soll das Pattern erfüllen? (Creational, Behavioral oder Structural Pattern?) Was soll im Entwurf variabel sein? 6

Was sind Creational Patterns? Creational Patterns = deutsch Erzeugungsmuster Vorgehensmodelle zur Erzeugung von Objekten in OO Flexiblere Objekterzeugung als mit new-operator Dazu gehören Singleton Factory Method Builder Abstract Factory Allen gemeinsam Verstecken Erzeugungsprozess (Kapselung, Information Hiding) Bieten Schnittstelle zur Objekterzeugung (Abstrakte Klasse) 7

Singleton Zweck Garantiert, dass nur genau eine Instanz einer Klasse existiert Entwurf Klasse selbst für Verwaltung ihres einzigen Exemplars zuständig Private Klassenvariable speichert einzige Instanz Privater Konstruktor verhindert Objekterzeugung Öffentliche Klassenmethode getinstance Liefert einzige Instanz Ermöglicht globalen Zugriff Singleton - static einzigeinstanz - Singleton() + static getinstance():singleton 8

Singleton (Forts.) Implementierung public class Singleton { 1 private static Singleton einzigeinstanz = null; 2 private Singleton() {}; {}; } 1 2 3 4 3 public static Singleton getinstance(){ if if (einzigeinstanz = null) 4 einzigeinstanz = new new Singleton(); return einzigeinstanz; } Private Klassenvariable Privater Konstruktor Öffentliche Zugriffsmethode Konstruktor wird nur einmal aufgerufen 9

Singleton (Forts.) Vorteile Einfache Implementierung Entlastet anfällige Systemteile Ableitung und Spezialisierung der Klasse möglich Alternative: Anzahl an Instanzen variabel Nachteile Performance-Senkung bei Mehrbenutzer-Systemen möglich (Flaschenhals) Zerstörung problematisch, falls Clients Referenzen halten Anwendungsszenario Verteilte Anwendungen mit Datenbankzugriff Ein Objekt belastet Datenbank weniger als viele Objekte Kein ständiger Verbindungsauf- und Abbau Einziges Objekt wird sequentiell weiter gereicht 10

Factory Method Zweck Definiert eine Schnittstelle für die Objekterzeugung Konkrete Unterklassen für Objekterzeugung zuständig Entwurf Konstruktion Repräsentation 11

Factory Method (Forts.) Vorteile Durch Kapselung ist der Konstruktionsprozess (ConkreteFactory, ConcreteProduct) austauschbar Konkrete Produkte unterschiedlichen Typs erzeugbar Produktrückgabe auch im Fehlerfall möglich Nachteile ConcreteFactory an ConcreteProduct-Typ gebunden Product-Änderung erfordert Factory-Anpassung 12

Factory Method (Forts.) Anwendungsszenario Framework für Anwendungen, die dem Benutzer mehrere Dokumente auf einmal präsentieren können Abstraktionen: Abstrakte Klassen Anwendung und Dokument Anwendung kennt Dokument-Typ nicht erzeugedokument Methode kann durch Parameter konkreten Dokumenttyp bestimmen. Idee aus GoF - Entwurfsmuster 13

Builder Zweck Erzeugung von komplexen Objekten Erzeugung unterschiedlicher Repräsentationen durch den selben Konstruktionsprozess Entwurf Abstrakte Klasse Builder Klasse ConcreteBuilder mit überschriebenen Methoden Direktor gibt Konstruktionsauftrag Was? Wie? 14

Builder (Forts.) Zeitlicher Ablauf 1. Client instanziiert ConcreteBuilder-Objekt 2 3 1 4 2. Client initialisiert damit neuen Director 3. Client ruft buildproduct() auf 4. buildpartx()-methoden erzeugen Produkt 5. Client holt sich Produkt über getresult() 5 Zeitliche Trennung von Produkt-Erstellungsprozess und Abholen des Produktes 15

Builder (Forts.) Vorteile Erzeugung komplexer Objekte Leichtere Erweiterbarkeit durch Modularisierung (andere Directors, neue Builders) Zeitliche Trennung erlaubt Kontrolle jeden Erstellungsschrittes, Möglichkeit der direkten Fehlerbehandlung Nachteile Enge Kopplung zwischen Produkt und Builder 16

Builder (Forts.) Anwendungsszenario Anwendung, die Dokumente in verschiedene Formate konvertiert Einfach, neue Konvertierung einzufügen Builder 17

Abstract Factory Zweck Erzeugung von Familien verwandter oder abhängiger Objekte ohne konkrete Klassenbenennung Entwurf 1. Definition abstrakter Familienmitglieder (AbstractProductX) und der abstrakten Fabrik (AbstactFactory) 2. Jeder konkreten Familie folgt konkrete Fabrik Dynamische Auswahl konkreter Fabrik Client kennt konkreten Typ nicht 18

Abstract Factory (Forts.) Vorteile Client nur an Schnittstellen gekoppelt, Information Hiding Entwicklung konkreter Klassen außerhalb übriger Applikation Bereitstellung und Austausch von Objektfamilien einfach Testen übriger Applikation z.b. mit Test-Factory möglich Nachteile Erweiterung um weiteres Familienmitglied kompliziert Daher: genaueste Analyse der Familienmitglieder vor Implementierung 19

Abstract Factory (Forts.) Anwendungsszenario Look-And-Feel-Standards 20

Beziehungen zwischen Creational Patterns Builder Factory Method implementiert durch Abstract Factory einziges Exemplar Singleton Quelle: GoF - Entwurfsmuster 21

Zusammenfassung Beschreibung und Auswahl von Design Patterns Creational Patterns Singleton einzige Instanz Factory Method Schnittstelle zur Objekterzeugung Builder komplexe Objekte Abstrakt Factory Objektfamilien Prinzipien Modularisierung Information Hiding Kapselung Program to an Interface, Schnittstelle Default-Implementierung, Abstraktion (Abstrakte Klasse) Dynamisches Binden (Polymorphismus) 22

Ende Danke für die Aufmerksamkeit! 23