A simple overview of coding Design Patterns, described originally by the Gang of Four, which support better code quality through the use of well-defined purpose driven components
1. CREATION Abstract Factory
Used to create concrete instances of specific types, via context, without directly accessing a specific factory type
2. STRUCTURE Adapter
The implementation of consistent interfaces to support classes to interact, which otherwise implement incompatible interfaces
3. CREATION Builder
Enforces separation of concerns by separating the code responsible for building a type, from the implementation of the type
4. STRUCTURE Bridge
A structural separation of an object’s definition (interface) from its implementation
5. BEHAVIOR Chain of Responsibility
A structure which supports decoupling the receiver from the requester by permitting a series of types determine in sequence which receiver should handle a message request
6. STRUCTURE Composite
A structure pattern which permits the uniform treatment of a type, or a collection of types, such that the knowledge of the number of type instances being managed is irrelevant to the calling manager
7. BEHAVIOR Command
A messaging pattern which allows all individual requests to be treated as objects, and thereby permit the storage, execution, and reversal of execution of command requests to be implemented
8. STRUCTURE Decorator
A mechanism by which dynamic features and behaviors are added to an existing type
9. STRUCTURE Facade
A type which obscures and abstracts the complexity of the underlying subsystem, so to enforce use of the facade rather than the subsystem
10. STRUCTURE Factory Method
Support the creation of objects using a well defined interface, but defer the implementation to specific concrete subclasses, which create specific type instances
11. STRUCTURE Flyweight
A type which is purpose built to be shared, containing the minimum members to represent the types in its specific shared use case
12. BEHAVIOR Interpreter
A lexical grammar of expressions which form a language and the support to parse expressions which conform to the language
13. BEHAVIOR Iterator
A means to sequentially access and interpret members of a collection, generically without needing to understand the type
14. BEHAVIOR Mediator
Decouples types from one another, by using a intermediary type through which communication is invoked
15. BEHAVIOR Memento
A type which is designed to store state, as a sufficient representation of another type such that the type to be represented can be recovered as required
16. BEHAVIOR Observer
A communication pattern which distributes a signal from a single type to an arbitrary number of related types, when the original type instance is modified, so that the related types can react to the change
17. CREATION Prototype
A means to create fully-implemented duplicates of concrete types, of the same type and internal state
18. STRUCTURE Proxy
A type which has the member data and requisite permission set to act on behalf of another type
19. BEHAVIOR State
A behavior pattern which allows the behavior of a type externally determined by the internal state of the instance type
20. BEHAVIOR Strategy
A pattern which supports many alternative implementations of an interface, to permit choice in the implementation and thereby select its desired behavior
21. CREATION Singleton
A mechanism to enforce the reuse of a single instance of a type
22. BEHAVIOR Template Method
A pattern whereby an algorithm is defined, but the implementation of the algorithm’s steps may be redefined and extended, without changing the original algorithms structure
23. BEHAVIOR Visitor
An object type which iterates over a collection, performing the same operation on each item in the collection