Design Patterns

Design Patterns

Design Patterns SEP 2018 Tobias Lingelmann 2018-05-08 Wissenschaftliche Betreuer: Daniel Kaltenthaler, Johannes Lohrer Verantwortlicher Professor: DBS Prof. Dr. Peer Kröger Inhalt • Allgemeines • Ziele von Entwurfsmustern • Mögliche Probleme • Verhaltensmuster (Behavioral) • Strukturmuster (Structural) • Erzeugungsmuster (Creational) Design Patterns 2 Allgemeines • Wiederverwendbare Vorlagen für häufiger vorkommende Herausforderungen. • Ursprünglich aus der Architektur (Christopher Alexander, 1979) • 1994: “GoF-Patterns” aufgrund des Buches “Design Patterns” von Erich Gamma, Richard Helm, Ralph Johnson und John Vlissides (Gang of Four) Design Patterns 3 Ziele • Bieten bewährte Lösungen für Probleme • Unterstützen das Schreiben flexiblen, wiederverwendbaren und wartbaren Codes • Helfen bei der Umsetzung bestimmter Design- Prinzipien (SOLID, etc.) • Generell unabhängig von der Sprache (da nur „Ideen“, nicht „Implementierungen“) Design Patterns 4 Mögliche Probleme • Nützliches Werkzeug zur Lösung bestimmter Probleme, aber nicht „Mittel für alles“. (Ein Hammer ist für eine Schraube nur zweite Wahl. ☺ ) • Entwurfsmuster könnten fälschlicherweise als Garant für gutes Design/guten Code angesehen werden. • Manche „Design Patterns“ werden bei falscher Anwendung zu „Anti-Patterns“. Design Patterns 5 Observer-Pattern Ein Subjekt verwaltet eine Liste an Observern, die benachrichtigt werden, sollte sich etwas beim Subjekt ändern. Quelle Beispiel: Properties in JavaFX Design Patterns 6 Iterator-Pattern Ein Iterator („Cursor“) wird genutzt um sequentiell auf Daten zuzugreifen ohne deren genaue Struktur offen zu legen. Quelle Beispiel: for (String a : myStringList) { … Design Patterns 7 Strategy-Pattern Erlaubt während der Laufzeit aus mehreren Algorithmen zu wählen. (Auch gut, wenn sich sonst, wenig bis nichts ändert, um Unterklassen zu vermeiden.) Beispiel: Unterschiedliche Sortieralgorithmen Design Patterns 8 State-Pattern Implementiert eine (endliche) Zustandsmaschine, bei der sich das Verhalten basierend auf dem aktiven Zustand ändert. Quelle Design Patterns 9 Facade-Pattern Versteckt ein komplexes System hinter einer einfach aufzurufenden Fassade/API. Quelle Design Patterns 10 Singleton-Pattern Sorgt dafür, dass nur eine Instanz dieses Objekts existiert. Wird oft aus Bequemlichkeit genutzt, obwohl nicht nötig. → Aufpassen mit der Verwendung! Design Patterns 11 Factory-Pattern GoF: „Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.” Quelle Design Patterns 12 Factory-Pattern GoF: „Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.” Quelle Design Patterns 13 Factory-Pattern Weit geläufiger: Irgendeine Methode, deren einzige Aufgabe es ist den Erstellungsprozess eines Objekts zu „verstecken“ und das Objekt zurück zu geben. public class JsonHandlerFactory { public static JsonHandler createHandler() { return new JsonPrintHandler(); } } Design Patterns 14 Linksammlung • https://en.wikipedia.org/wiki/Software_desig n_pattern • http://www.java2s.com/Tutorials/Java/Java_D esign_Patterns/index.htm • https://www.tutorialspoint.com/design_patte rn/index.htm • https://github.com/EnterpriseQualityCoding/F izzBuzzEnterpriseEdition ;-) • https://dzone.com/articles/java-the-factory- pattern Design Patterns 15.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    15 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us