====== Design Patterns ====== Als Design-Patterns bezeichnet man Standardwerkzeuge in der Programmierung. Design-Patterns könnte man als Standard-Lösungen für Standard-Probleme bezeichnen, allerdings sind diese Probleme bereits soweit so abstrakt, dass sie in der Regel nicht in der Programmiersprache abgebildet sind, sondern man sie von Hand mit einer Programmiersprache ausformulieren muss. Einfache Standardprobleme sind beispielsweise das einfügen und entnehmen von Elementen aus einem Array. Eine Standard-Lösung hierfür wäre die Liste. Ein anderes Standardproblem ist das Aufrufen einer Funktion anhand des Datentyps. Die Standardlösung hierfür wäre eine [[cpp:oop:vtable|Tabelle mit Funktionspointern]], womit die Objektorientierte Programmierung gewissermaßen zum exzessiven Ausleben eines Design Patterns wird. Diese Standard-Probleme sind allerdings so alltäglich, dass sie in der Regel nicht als Design-Pattern bezeichnet werden. Aber die Informatik hat noch weitere Standard-Probleme und auch dafür gibt es Standard-Lösungen: ===== Erzeugende Design-Patterns ===== * [[factory|Abstact Factory]] * [[builder|Builder]] * [[factorymethod|Factory Method]] * [[Prototype]] * [[Singleton]] ===== Strukturelle Design-Patterns ===== * [[Adapter]] * [[Composite]] * [[Bridge]] * [[Prototype]] * [[Decorator]] * [[Facade]] * [[Flyweight]] * [[Proxy]] * [[Observer]] ===== Verhaltensorientierte Patterns ===== * [[Chain of Responsibility]] * [[Command]] * [[Interpreter]] * [[Iterator]] * [[Mediator]] * [[Memento]] * [[null|Null Object]] * [[Plugin]] * [[State]] * [[Strategy]] (auch Policy) * [[templateMethod|Template Method]] * [[Visitor]] ===== Andere Design Patterns ===== * [[businessdelegate|Business Delegate]] * [[dataaccessobject]] * [[datatransferobject|Data Transfer Object]] * [[dependencyinjection|Dependency Injection]] * [[inversionofcontrol|Inversion of Control]] * [[mvc|Model View Controller]] * [[mvp|Model View Presenter]] * [[FluentInterface|Fluent Interface]]