Entwurfsmuster: Singleton und Factory
Die Schülerinnen und Schüler wenden die Entwurfsmuster Singleton und Factory an, um die Objekterzeugung und -verwaltung zu optimieren.
Über dieses Thema
Entwurfsmuster wie Singleton und Factory optimieren die Objekterzeugung und -verwaltung in objektorientierter Programmierung. Das Singleton-Muster gewährleistet genau eine Instanz einer Klasse mit globalem Zugriffspunkt, ideal für Ressourcen wie Logger oder Konfigurationsmanager. Das Factory-Muster kapselt die Objekterzeugung, sodass Client-Code unabhängig von konkreten Klassen bleibt und Erweiterungen erleichtert werden. Schülerinnen und Schüler lernen, diese Muster anzuwenden, um Code wartbarer und flexibler zu gestalten.
Im KMK-Lehrplan Sekundarstufe II fördern diese Muster das Modellieren und Implementieren sowie Problemlösen. Schüler vergleichen Anwendungsbereiche: Singleton eignet sich für einzigartige Objekte, Factory für polymorphische Hierarchien. Sie beurteilen Vor- und Nachteile, etwa die eingeschränkte Testbarkeit von Singleton durch globale Zustände oder die erhöhte Flexibilität von Factory bei Varianten.
Aktives Lernen eignet sich hervorragend, da Schüler die Muster selbst implementieren und refactoren. Pair-Programming-Sessions oder Gruppenvergleiche von Code-Varianten machen abstrakte Konzepte greifbar, fördern Diskussionen zu Trade-offs und verbessern das Verständnis durch iterative Anpassungen.
Leitfragen
- Warum ist es sinnvoll, bewährte Entwurfsmuster statt individueller Ad-hoc-Lösungen zu nutzen?
- Vergleichen Sie die Anwendungsbereiche des Singleton- und des Factory-Musters.
- Beurteilen Sie die Vor- und Nachteile des Singleton-Musters in Bezug auf Testbarkeit und Flexibilität.
Lernziele
- Demonstrieren Sie die Implementierung des Singleton-Musters zur Verwaltung einer einzelnen Ressource, z. B. einer Datenbankverbindung.
- Entwerfen Sie eine Factory-Klasse, die verschiedene Objekttypen basierend auf Eingabeparametern erstellt.
- Analysieren Sie die Auswirkungen der Verwendung des Singleton-Musters auf die Testbarkeit von Code.
- Vergleichen Sie die Anwendungsfälle und die Komplexität von Singleton und Factory bei der Objekterzeugung.
- Bewerten Sie die Vor- und Nachteile beider Entwurfsmuster für spezifische Software-Szenarien.
Bevor es losgeht
Warum: Schüler müssen die Konzepte von Klassen, Objekten, Instanzen und Methoden verstehen, um Entwurfsmuster anwenden zu können.
Warum: Ein grundlegendes Verständnis davon, wie Objekte erstellt und verwaltet werden, ist notwendig, um die Optimierungen durch Entwurfsmuster nachvollziehen zu können.
Schlüsselvokabular
| Singleton-Muster | Ein Entwurfsmuster, das sicherstellt, dass von einer Klasse nur eine einzige Instanz existiert und einen globalen Zugriffspunkt auf diese Instanz bereitstellt. |
| Factory-Muster | Ein Entwurfsmuster, das eine Schnittstelle zur Erzeugung von Objekten in einer Superklasse kapselt, aber Unterklassen entscheiden lässt, welche Klasse instanziiert wird. |
| Instanziierung | Der Prozess der Erzeugung eines Objekts aus einer Klasse. Bei Entwurfsmustern wird gesteuert, wie und wann diese Erzeugung stattfindet. |
| Kapselung | Das Bündeln von Daten und Methoden, die auf diesen Daten operieren, innerhalb einer Einheit und die Beschränkung des Zugriffs auf diese Einheit von außen. |
| Globale Variable | Eine Variable, die außerhalb jeder Funktion oder jedes Blocks deklariert ist und somit im gesamten Programm zugänglich ist. Das Singleton-Muster nutzt oft einen globalen Zugriffspunkt. |
Vorsicht vor diesen Fehlvorstellungen
Häufige FehlvorstellungSingleton ist immer die beste Wahl für globale Objekte.
Was Sie stattdessen lehren sollten
Singleton birgt Risiken wie versteckte Abhängigkeiten und schlechte Testbarkeit. Aktive Refactoring-Übungen in Paaren zeigen Alternativen wie Dependency Injection und fördern Diskussionen zu Kontextabhängigkeit.
Häufige FehlvorstellungFactory-Muster macht Code unnötig kompliziert.
Was Sie stattdessen lehren sollten
Factory trennt Erzeugung von Nutzung und erleichtert Polymorphie. Gruppenvergleiche von Code-Varianten verdeutlichen Vorteile bei Erweiterungen, Pair-Tests beweisen Einfachheit in der Praxis.
Häufige FehlvorstellungSingleton und Factory sind austauschbar.
Was Sie stattdessen lehren sollten
Singleton zielt auf Einzigartigkeit, Factory auf Abstraktion der Erzeugung. Whole-Class-Diskussionen klären Anwendungsbereiche durch Beispiele und Trade-off-Analysen.
Ideen für aktives Lernen
Alle Aktivitäten ansehenPair Programming: Singleton implementieren
Paare erstellen eine Logger-Klasse mit Singleton-Muster in Java. Sie testen den globalen Zugriff und verhindern Mehrfachinstanzen. Abschließend refactoren sie zu einem thread-sicheren Singleton.
Small Groups: Factory vs. Direkt-Erzeugung
Gruppen implementieren eine Shape-Hierarchie mit Factory-Muster und vergleichen sie mit direkter new-Anweisung. Sie erweitern um neue Shapes und messen Wartbarkeitsunterschiede. Präsentation der Ergebnisse.
Whole Class: Vor- und Nachteile diskutieren
Klasse analysiert vorgegebenen Singleton-Code auf Testbarkeit. Gemeinsam listen Vor- und Nachteile auf Flipchart, bewerten Flexibilität und passen Code an.
Individual: Factory refactoring
Jede Schülerin refaktoriert eine bestehende Klasse mit Factory-Muster. Sie dokumentiert Änderungen und testet Erweiterbarkeit mit einer neuen Subklasse.
Bezüge zur Lebenswelt
- In der Softwareentwicklung für Betriebssysteme wird das Singleton-Muster oft für zentrale Dienste wie den Event-Logger oder den Konfigurationsmanager verwendet, um sicherzustellen, dass diese nur einmal initialisiert werden und von überall im System zugänglich sind.
- Bei der Entwicklung von Spielen kann eine Factory-Klasse verwendet werden, um verschiedene Arten von Gegnern oder Spielobjekten zu erstellen. Dies ermöglicht es dem Spielentwickler, neue Gegnertypen hinzuzufügen, ohne den Kerncode des Spiels ändern zu müssen.
- In Webanwendungen wird das Singleton-Muster häufig für Datenbankverbindungs-Pools eingesetzt, um die Anzahl der Datenbankverbindungen zu begrenzen und die Leistung zu optimieren, indem sichergestellt wird, dass nur eine einzige Verbindungskonfiguration aktiv ist.
Ideen zur Lernstandserhebung
Geben Sie jedem Schüler ein Code-Snippet, das entweder das Singleton- oder das Factory-Muster verwendet. Bitten Sie die Schüler, zu identifizieren, welches Muster verwendet wird, und zwei Sätze zu schreiben, die erklären, warum dieses Muster in diesem spezifischen Kontext gewählt wurde.
Stellen Sie den Schülern die folgende Frage: 'Sie entwickeln eine Anwendung, die eine einzige, globale Konfigurationseinstellung benötigt. Welches Entwurfsmuster würden Sie verwenden und warum? Beschreiben Sie kurz, wie Sie es implementieren würden.'
Leiten Sie eine Diskussion mit der Frage: 'Unter welchen Umständen könnte die Verwendung des Singleton-Musters zu Problemen bei der Wartung oder Testbarkeit führen? Nennen Sie mindestens zwei konkrete Beispiele und schlagen Sie alternative Lösungsansätze vor.'
Häufig gestellte Fragen
Was ist der Unterschied zwischen Singleton- und Factory-Muster?
Wie bewertet man Vor- und Nachteile des Singleton-Musters?
Wie kann aktives Lernen Entwurfsmuster vermitteln?
Wann wendet man Factory-Muster an?
Planungsvorlagen für Informatik
Mehr in Objektorientierte Modellierung und Software-Engineering
Einführung in die Objektorientierung
Die Schülerinnen und Schüler identifizieren die Kernkonzepte der Objektorientierung und ihre Vorteile in der Softwareentwicklung.
2 methodologies
Klassen und Objekte
Die Schülerinnen und Schüler definieren Klassen und instanziieren Objekte, um reale Entitäten in Code abzubilden.
2 methodologies
Vererbung und Hierarchien
Die Schülerinnen und Schüler wenden Vererbung an, um Klassenhierarchien zu erstellen und Code-Wiederverwendung zu fördern.
2 methodologies
Polymorphie und Schnittstellen
Die Schülerinnen und Schüler implementieren Polymorphie und nutzen Schnittstellen für flexible und erweiterbare Softwarearchitekturen.
2 methodologies
UML-Klassendiagramme
Die Schülerinnen und Schüler entwerfen Klassendiagramme zur Abbildung komplexer Realwelt-Szenarien unter Berücksichtigung von Vererbung, Assoziationen und Aggregationen.
2 methodologies
UML-Sequenzdiagramme
Die Schülerinnen und Schüler erstellen Sequenzdiagramme, um den zeitlichen Ablauf von Interaktionen zwischen Objekten darzustellen und zu analysieren.
2 methodologies