Karteikarten
Entwurfsmuster Vor-und Nachteile
Karten in diesem Stapel (18)
- 1Strategiemuster VorteileEs wird eine Familie von Algorithmen definiert.
Es wird die Auswahl aus verschiedenen Implementierungen ermöglicht und dadurch erhöhen sich die Flexibilität und die Wiederverwendbarkeit.
Es können Mehrfachverzweigungen vermieden werden und dies erhöht die Übersicht des Codes.
Strategien bieten eine Alternative zur Unterklassenbildung der Kontexte. - 2Strategiemuster NachteileKlienten müssen die unterschiedlichen Strategien kennen, um zwischen ihnen auswählen und den Kontext initialisieren zu können.
Gegenüber der Implementierung der Algorithmen im Kontext entsteht hier ein zusätzlicher Kommunikationsaufwand zwischen Strategie und Kontext. - 3Dekorierermuster VorteileDie Vorteile bestehen darin, dass mehrere Dekorierer hintereinandergeschaltet werden können; die Dekorierer können zur Laufzeit und sogar nach der Instanziierung ausgetauscht werden. Die zu dekorierende Klasse ist nicht unbedingt festgelegt (wohl aber deren Schnittstelle). Zudem können lange und unübersichtliche Vererbungshierarchien vermieden werden.
- 4Dekorierermuster NachteileDas Muster hat eine Gefahr: Da eine dekorierte Komponente nicht identisch mit der Komponente selbst ist (als Objekt), muss man beim Testen auf Objekt-Identität vorsichtig sein. (Ein Vergleich kann falsch ausgehen, obwohl dieselbe Komponente gemeint ist.) Zudem müssen bei der Verwendung von dekorierten Komponenten die Nachrichten vom Dekorierer an das dekorierte Objekt weitergeleitet werden.
- 5Abstrakte Fabrik Muster VorteileDer Klient ist von konkreten Klassen isoliert.[2]
Der Austausch von Produktfamilien ist auf einfache Art und Weise möglich. - 6Abstrakte Fabrik Muster NachteileNeue Produktarten lassen sich schwer hinzufügen, da in allen konkreten Fabriken Änderungen vorzunehmen sind.
- 7Beobachter VorteileSubjekte und Beobachter können unabhängig variiert werden. Subjekt und Beobachter sind auf abstrakte und minimale Art lose gekoppelt. Das beobachtete Objekt braucht keine Kenntnis über die Struktur seiner Beobachter zu besitzen, sondern kennt diese nur über die Beobachter-Schnittstelle. Ein abhängiges Objekt erhält die Änderungen automatisch. Es werden auch Multicasts unterstützt.
- 8Beobachter NachteileÄnderungen am Subjekt führen bei großer Beobachteranzahl zu hohen Änderungskosten. Außerdem informiert das Subjekt jeden Beobachter, auch wenn dieser die Änderungsinformation nicht benötigt. Zusätzlich können die Änderungen weitere Änderungen nach sich ziehen und so einen unerwartet hohen Aufwand haben.
Der Mechanismus liefert keine Information darüber, was sich geändert hat. Die daraus resultierende Unabhängigkeit der Komponenten kann sich allerdings auch als Vorteil herausstellen.
Ruft ein Beobachter während der Bearbeitung einer gemeldeten Änderung wiederum Änderungsmethoden des Subjektes auf, kann es zu Endlosschleifen kommen.
Typischerweise ist im Quellcode des Subjektes nicht erkennbar, welche Beobachter genau informiert werden. Es wird dadurch häufig schwer nachvollziehbar, welche Zustände das Programm bei einem Ereignis insgesamt durchläuft. - 9Memento VorteileDatenkapselung kann aufrechterhalten werden, womit keine direkte Sichtbarkeit beziehungsweise Zugriffsmöglichkeit auf Attribute eines Objekts entsteht
Das Muster stellt eine einfache Möglichkeit dar, eine teilweise Schnittstelle zu schaffen - 10Memento NachteileDie oben angegebene Implementierung hat einen Nachteil, indem sie eine interne Klasse deklariert. Es wäre besser, wenn die Memento-Strategie auf mehr als ein Objekt anwendbar wäre.
- 11Befehl VorteileAuslösender und Ausführender sind entkoppelt. Befehlsobjekte können wie andere Objekte auch manipuliert werden (Verändern, Filtern, Zwischenspeichern, …). Befehlsobjekte können zu komplexen Befehlen kombiniert werden (Makros, realisiert als Kompositum).
- 12Befehl NachteileDa für jedes Kommando eine neue Klasse benötigt wird, kann deren Anzahl schnell groß und die Implementierung damit unübersichtlich werden.
- 13Kompsitum Vorteileeinheitliche Behandlung von Primitiven und Kompositionen
leichte Erweiterbarkeit um neue Blatt- oder Container-Klassen - 14Kompositum NachteileEin zu allgemeiner Entwurf erschwert es, Kompositionen auf bestimmte Klassen (und damit zumeist Typen) zu beschränken. Das Typsystem der Programmiersprache bietet dann keine Hilfe mehr, so dass Typüberprüfungen zur Laufzeit nötig werden.
- 15Iterator VorteileDie Implementierung der zugrunde liegenden Datenstruktur bleibt verborgen.
- 16Iterator NachteileJe nach Variante der Implementierung können sich Nachteile durch erhöhte Laufzeit- und Speicherkosten ergeben.
Bei polymorphen Iteratoren muss man den Preis für virtuelle Methoden zahlen.
Wenn der Iterator sein Aggregat kennt und/oder das Aggregat über seine Iteratoren Buch führt, verteuern sich vor allem das Erzeugen und Vernichten von Aggregaten. (Im Gegenzug erhält man eine höhere Sicherheit) - 17Besucher VorteileNeue Operationen lassen sich leicht durch die Definition neuer Besucher hinzufügen.
Verwandte Operationen werden im Besucher zentral verwaltet und von besucherfremden Operationen getrennt.
Besucher können mit Objekten aus voneinander unabhängigen Klassenhierarchien arbeiten. - 18Besucher NachteileDie gute Erweiterungsmöglichkeit der Klassen von Besuchern muss mit einer schlechten Erweiterbarkeit der Klassen der konkreten Elemente erkauft werden. Müssen neue konkrete Elemente hinzugefügt werden, so führt dies dazu, dass viele Besucher-besuche-Methoden implementiert werden müssen
Informationen
- Beschreibung
- Der Nutzer hat seine Fachbereichs-Information gelöscht. Karteikarten am Entwurfsmuster Vor-und Nachteile, erstellt von Gelöschter Nutzer am 27/09/2018.
- Erstellt von
- Gelöschter Nutzer · Sep 2018
- Aktualisiert
- 27 Sep 2018
- Aufrufe
- 17
- Verlauf
-
- Erstellt von Joel Weih · 26 Sep 2018
- Kopiert von Joel Weih · 27 Sep 2018
- Kopiert von Joel Weih · 27 Sep 2018
- Bewertung