Menu
Coddy logo textTech

Einführung in Entwurfsmuster

Teil des Abschnitts Objektorientierte Programmierung der Dart-Journey von Coddy. Lektion 89 von 110.

Entwurfsmuster sind bewährte Lösungen für häufige Probleme, auf die Entwickler beim Erstellen von Software immer wieder stoßen. Statt das Rad jedes Mal neu zu erfinden, kannst du diese etablierten Vorlagen anwenden, um ähnliche Herausforderungen auf konsistente und wartbare Weise zu lösen.

Betrachten Sie Entwurfsmuster als Rezepte. Genauso wie ein Koch nicht jedes Mal eine neue Art der Brotherstellung erfindet, verwenden Programmierer Muster, die über Jahrzehnte hinweg verfeinert wurden. Diese Muster nutzen die OOP-Konzepte, die Sie bereits gelernt haben – Klassen, Vererbung, Schnittstellen und Polymorphie – und kombinieren sie auf spezifische Weise, um bestimmte Probleme zu lösen.

Entwurfsmuster werden typischerweise in drei Kategorien unterteilt:

KategorieZweckBeispiele
ErzeugungsmusterWie Objekte erstellt werdenSingleton, Factory
StrukturmusterWie Objekte zusammengesetzt werdenAdapter, Decorator
VerhaltensmusterWie Objekte kommunizierenObserver, Strategy

In den kommenden Lektionen werden Sie spezifische Muster aus jeder Kategorie kennenlernen. Jedes Muster adressiert ein bestimmtes Problem: sicherzustellen, dass nur eine Instanz einer Klasse existiert, Objekte zu erstellen, ohne genaue Klassen anzugeben, oder Objekten zu ermöglichen, andere über Änderungen zu benachrichtigen. Zu verstehen, wann und warum man jedes Muster verwendet, ist genauso wichtig wie zu wissen, wie man es implementiert.

challenge icon

Aufgabe

Einfach

Lass uns ein einfaches Problemlösungssystem entwickeln, das veranschaulicht, wie Design Patterns Code nach Kategorien organisieren! Du wirst eine Struktur erstellen, die verschiedene Softwareherausforderungen klassifiziert und vorschlägt, welcher Pattern-Typ bei ihrer Lösung helfen könnte.

Du wirst deinen Code in zwei Dateien organisieren:

  • patterns.dart: Erstelle ein Enum namens PatternCategory mit drei Werten: creational, structural und behavioral. Jeder Wert sollte ein Feld String description haben, das seinen Zweck erklärt:
    • creational: "Handles object creation"
    • structural: "Handles object composition"
    • behavioral: "Handles object communication"
    Erstelle außerdem eine Klasse namens Problem, die eine Softwareherausforderung repräsentiert. Sie sollte ein Feld String name und ein Feld PatternCategory category haben. Füge eine Methode suggest() hinzu, die einen String im folgenden Format zurückgibt: [name] -> Use a [category description] pattern
  • main.dart: Importiere deine Patterns-Datei und zeige, wie verschiedene Probleme verschiedenen Pattern-Kategorien zugeordnet werden. Erstelle drei Instanzen von Problem:
    • Ein Problem namens Ensure single database connection mit der Kategorie creational
    • Ein Problem namens Make old API work with new system mit der Kategorie structural
    • Ein Problem namens Notify users when data changes mit der Kategorie behavioral
    Rufe für jedes Problem suggest() auf und gib die Ergebnisse aus.

Diese Herausforderung hilft dir zu erkennen, wie Design Patterns nach der Art des Problems kategorisiert werden, das sie lösen – ein wichtiges Konzept, wenn du in den kommenden Lektionen beginnst, bestimmte Patterns zu lernen!

Erwartete Ausgabe:

Ensure single database connection -> Use a Handles object creation pattern
Make old API work with new system -> Use a Handles object composition pattern
Notify users when data changes -> Use a Handles object communication pattern

Probier es selbst

import 'patterns.dart';

void main() {
  // TODO: Erstelle drei Problem-Instanzen:
  // 1. name: "Ensure single database connection", category: creational
  // 2. name: "Make old API work with new system", category: structural
  // 3. name: "Notify users when data changes", category: behavioral

  // TODO: Rufe suggest() für jedes Problem auf und gib die Ergebnisse aus
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-Dart-Compiler