Zum Inhalt springen

Verhaltensmuster (Software)

aus Wikipedia, der freien Enzyklopädie
Dies ist die aktuelle Version dieser Seite, zuletzt bearbeitet am 7. Januar 2024 um 17:15 Uhr durch imported>Invisigoth67 (typo).
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Die Verhaltensmuster (englisch {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value)) in der Softwareentwicklung sind Entwurfsmuster, die komplexes Verhalten der Software modellieren. Auf diese Weise wird die Flexibilität der Software hinsichtlich ihres Verhaltens erhöht.

Einige Verhaltensmuster werden üblicherweise sowohl mit objektorientierten<ref name="GO4"></ref> als auch dynamischen und funktionalen Programmiersprachen umgesetzt, andere üblicherweise nur mit letzteren.<ref name="norvig">Peter Norvig: Design Patterns in Dynamic Languages. (PDF; PPT,) 17. März 1998, abgerufen am 6. April 2013 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref><ref name="sierra">Stuart Sierra: Functional Design Patterns. InfoQ, 3. April 2013, abgerufen am 6. April 2013 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>

Vertreter

Die Verhaltensmuster können in verschiedene Gruppen unterteilt werden. Bei den funktionalen Verhaltensmuster werden beispielsweise Zustandsmuster, Data Building Muster, und Flusssteuerungsmuster unterschieden.

Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.Accumulator
Muster für Funktionen, die eine große Menge an Eingaben nimmt und kleine (skalare) Ausgaben produzieren, wie z. B. Lazy ausgewertete Sequenzen und Reduce-Funktionen. Accumulator ist ein Data Building Muster.
Beobachter (englisch observer pattern)<ref name="GO4" /><ref name="sierra" />
Ist eine Art von Publish/Subscribe oder Ereignisbeobachter. Objekte oder Funktionen registrieren sich, um ein Ereignis zu erkennen, das von einem anderen Objekt erzeugt worden sein könnte. Die funktionale Variante entspricht im Wesentlichen der objektorientierten Version. In der funktionalen Programmierung ist das Beobachter Verhaltensmuster ein Flusssteuerungsmuster.
Besucher (englisch visitor pattern)<ref name="GO4" />
Ist eine Möglichkeit, einen Algorithmus von einem Objekt zu trennen.
Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.Consequences<ref name="sierra" />
Jedes Ereignis kann mehrere Ereignisse auslösen. Erzeugte Ereignisse können Zustandsänderungen bewirken, Consequences ist somit ein Zustandsmuster
Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.Einmaliger Besucher (englisch single-serving visitor pattern)
Objekt das einen einmaligen Nutzer eines Systems, der angelegt, einmal verwendet und anschließend gelöscht wird, implementiert.
Hierarchischer Besucher
Stellt eine Möglichkeit, in einer hierarchischen Datenstruktur wie z. B. einem Baum jeden Knoten zu erreichen.
Interpreter<ref name="GO4" />
Implementiert eine spezielle Programmiersprache, um schnell eine spezifische Menge von Problemen zu lösen.
Iterator<ref name="GO4" />
Iteratoren werden zum Zugriff auf Elemente eines aggregierten Objekt verwendet.
Kommando (englisch command pattern)<ref name="GO4" />
Befehlsobjekte kapseln eine Handlung mit ihren Parametern.
MapReduce<ref name="sierra" />
Eine Reduktion von linearen Strukturen. MapReduce ist ein Data Building Muster.
Memento<ref name="GO4" />
Stellt die Fähigkeit zur Verfügung, ein Objekt zu einem Vorgängerzustand wiederherzustellen (rollback).
Nullobjekt
Wird als Vorgabewert für ein Objekt verwendet.
Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.Planmäßige Tätigkeit (englisch scheduled-task pattern)
Eine Tätigkeit wird so geplant, dass sie in einem bestimmten Intervall oder (in Echtzeitsystemen) zu einer gewissen Uhrzeit stattfindet.
Protokollstapel<ref>Protocol Stack. Abgerufen am 2. Juli 2013 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>
Die Kommunikation wird über mehrere Schichten durchgeführt, die eine Datenkapselungshierarchie bilden.
Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.Reduce/Combine<ref name="sierra" />
Eine Reduktion von baumartigen Strukturen. Reduce/Combine ist ein Data Building Muster.
Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.Rekursive Erweiterung<ref name="sierra" />
Rekursive Erweiterung ist ein Data Building Muster.
Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.Reservierung (englisch Reservation)<ref name="soa" />
Eine Ressource wird für eine gewisse Zeit reserviert. Ein Beispiel ist ein Warenkorb, bei dem ein in den Warenkorb eines Benutzers aufgenommenes Objekt für eine Zeit reserviert wird. Wird der Bezahlungsvorgang nicht innerhalb der vorgegebenen Zeit abgeschlossen, wird das Objekt wieder für andere Benutzer freigegeben.
Schablonenmethode (englisch template method pattern)<ref name="GO4" />
Beschreibt das Gerüst eines Programms
Schwache Referenz (englisch weak reference pattern)<ref>Ashod Nakashian: Weak Reference Pattern. Abgerufen am 2. Juli 2013 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>
Entkoppelt ähnlich dem Beobachter Entwurfsmuster einen Beobachter von einem zu beobachtenden (englisch observable).
Pipeline<ref name="sierra" />
Ein Prozess mit einem einzelnen Ausführungspfad der in mehrere diskrete Schritte aufgeteilt wird, wobei jeder Schritt ein ähnlich geformtes Ergebnis liefert. Pipeline ist ein Flusssteuerungsmuster.
Spezifikation (englisch specification pattern)
Rekombinierbar Geschäftslogik in Boolischer Art und Weise.
Stapelveräußerlichung (englisch externalize the stack)<ref>Externalize The Stack. Abgerufen am 2. Juli 2013 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>
Verwandelt eine rekursive Funktion in eine Iterative, die den Stapel verwendet.
Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.State/Event<ref name="sierra" />
Stellt einen beliebigen vorherigen Status durch Reduzierung über gespeicherte Ereignisse wieder her. State/Event ist ein Zustandsmuster
Strategie (englisch strategy pattern)<ref name="GO4" /><ref name="sierra" />
Dient zur Auswahl von unterschiedlichen, meist komplexen Algorithmen zur Laufzeit.
Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.Token<ref name="sierra" />
Wird verwendet, um eine Operation abbrechen und rückgängig machen zu können, wobei die Operation selbst keine bestimmte (benannte) Identität besitzt. Token ist ein Flusssteuerungsmuster.
Vermittler (englisch mediator pattern)<ref name="GO4" />
Stellt eine einheitliche Schnittstelle für eine Schnittstellenmenge eines Teilsystems zur Verfügung.
Skriptfehler: Ein solches Modul „Vorlage:Anker“ ist nicht vorhanden.Wrapper<ref name="sierra" />
Ein Prozess mit mehreren diskreten Schritten und einem einzelnen Hauptausführungspfad, jedoch einer möglichen Ausführungsverzweigung bei jedem Schritt. Dieses Muster darf nicht mit dem oft auch Wrapper genannten Adapter-Entwurfsmuster in objektorientierten Programmiersprachen verwechselt werden. Adapter ist ein Flusssteuerungsmuster.
Zustand (englisch state pattern)<ref name="GO4" />
Ist ein sauberer Weg für ein Objekt, teilweise seinen Typ zur Laufzeit zu verändern.
Zuständigkeitskette (englisch chain of responsibility pattern)<ref name="GO4" />
Befehlsobjekte werden durch logic-containing bearbeitende Objekte bearbeitet oder an andere Objekte übergeben.
Sicherung (englisch {{Modul:Vorlage:lang}} Modul:Multilingual:153: attempt to index field 'data' (a nil value))
Bei einer Häufung von Zugriffsfehlern auf eine Ressource, etwa aufgrund von Überlastung, wird der Zugriff auf diese Ressource für eine Zeit unterbunden.
Post/Redirect/Get
Verhindert eine doppelte POST-Anfrage bei Webanwendungen.

Siehe auch

Quellen

<references> <ref name="soa"> Arnon Rotem-Gal-Oz: Reservation. In: Cirrus Minor. Abgerufen am 1. Oktober 2014 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)). </ref> </references>

<templatestyles src="Erweiterte Navigationsleiste/styles legacy.css" />Vorlage:Klappleiste/Anfang

Erzeugungsmuster

Abstrakte Fabrik | Erbauer | Fabrikmethode | Prototyp | Singleton | Multiton | Objektpool

Strukturmuster

Adapter | Brücke | Decorator | Fassade | Fliegengewicht | Kompositum | Stellvertreter

Verhaltensmuster

Beobachter | Besucher | Interpreter | Iterator | Kommando | Memento | Schablonenmethode | Strategie | Vermittler | Zustand | Zuständigkeitskette | Interceptor | Nullobjekt | Protokollstapel

Muster für objekt-
relationale Abbildung

Datentransferobjekt | Table Data Gateway | Row Data Gateway | Active Record | Unit of Work | Identity Map | Lazy Loading | Identity Field | Dependent Mapping | Embedded Value | Serialized LOB | Inheritance Mapper | Metadata Mapping | Query Object | Command-Query-Responsibility-Segregation

Nachrichten-
übermittlungsmuster
andere

Application Controller | Business Delegate | Data Access Object | Dependency Injection | Extension Interface | Fluent Interface | Inversion of Control (IoC) | Lock | Model View Controller (MVC) | Model View Presenter (MVP) | Model View Update (MVU) | Model View ViewModel (MVVM) | Page Controller | Registry | Remote Facade | Repository | Service Locator | Session State | Table Module | Template View | Threadpool | Transaction Script | Transform View | Two-Step View | Value Object

Vorlage:Klappleiste/Ende