In software engineering, behavioral design patterns are design patterns that identify common communication patterns between objects and realize these patterns. By doing so, these patterns increase flexibility in carrying out this communication.
- Chain of Responsibility Pattern - A way of passing a request between a chain of objects
- Command Pattern - Encapsulate a command request as an object
- Interpreter Pattern - A way to include language elements in a program
- Iterator Pattern - Sequentially access the elements of a collection
- Mediator Pattern - Defines simplified communication between classes
- Memento Pattern - Capture and restore an object's internal state
- Observer Pattern - A way of notifying change to a number of classes
- State Pattern - Alter an object's behavior when its state changes
- Strategy Pattern - Encapsulates an algorithm inside a class
- Template Method Pattern - Defer the exact steps of an algorithm to a subclass
- Visitor Pattern - Defines a new operation to a class without change
In software engineering, creational design patterns are design patterns that deal with object creation mechanisms, trying to create objects in a manner suitable to the situation. The basic form of object creation could result in design problems or added complexity to the design. Creational design patterns solve this problem by somehow controlling this object creation.
- Abstract Factory Pattern - Creates an instance of several families of classes
- Builder Pattern - Separates object construction from its representation
- Factory Method Pattern - Creates an instance of several derived classes
- Prototype Pattern - A fully initialized instance to be copied or cloned
- Singleton Pattern - A class of which only a single instance can exist
In Software Engineering, Structural Design Patterns are Design Patterns that ease the design by identifying a simple way to realize relationships between entities.
- Adapter Pattern - Match interfaces of different classes
- Bridge Pattern - Separates an object's interface from its implementation
- Composite Pattern - A tree structure of simple and composite objects
- Decorator Pattern - Add responsibilities to objects dynamically
- Facade Pattern - A single class that represents an entire subsystem
- Flyweight Pattern - A fine-grained instance used for efficient sharing
- Proxy Pattern - An object representing another object