You are expected to be familiar with these design patterns by the final exam.
Creational Patterns
- Factory Method: method in a derived class creates needed objects
- Abstract Factory: for building related objects
- Builder: for building complex objects incrementally
- Prototype: for cloning new instances from a prototype
- Singleton: for a singular (sole) instance
Structural Patterns
- Adapter: adapts a server interface for a client
- Bridge: abstraction for binding one of many implementations
- Composite: for building recursive aggregations
- Decorator: extends an object transparently
- Façade: simplifies the interface for a subsystem
- Flyweight: manage many fine-grained objects shared efficiently
- Proxy: one object approximates another
Behavioral Patterns
- Chain of Responsibility: request delegated to the responsible service provider
- Command: request as first-class object
- Interpreter: language interpreter for a small grammar
- Iterator: aggregate elements are accessed sequentially
- Mediator: coordinates interactions between its associates
- Memento: captures and restores object states privately
- Observer: dependents update automatically when a subject changes
- State: object whose behavior depends on its state
- Strategy: abstractions for selecting one of many algorithms
- Template Method: algorithms with some steps supplied by a derived class
- Visitor: operations applied to elements of a heterogeneous object structure
Concurrency Patterns
- Active Object: decouple method invocation and execution
- Monitor Object: guard a resource to ensure safe execution
- Leader/Follower: allocate work using homogeneous actors
- Task Farm: allocate work using inhomogeneous actors
- Thread-specific Storage: give each actor its own private data