Introduction
Patterns exist in nature (Dunes, Grand Canyon), art (Modern, Impressionism), science and mathematics (Fractals, Crystals) and Computer Science (Design Patterns).
Computer Science Patterns (Design Patterns)
All well-structured systems are full of patterns. A pattern provides a common solution to a common problem in a given context. A mechanism is a design pattern that applies to a society of classes; a framework is typically an architectural pattern that provides an extensible template for applications within a domain.
Patterns are used to specify mechanisms and frameworks that shape the architecture of your system.
Classification
top
Design Pattern
|
Sub-Design Pattern
|
Fundamental
|
Delegation Functional Interface Proxy Immutal Marker Interface
|
Creational
|
Abstract Factory Anonymous Subroutine Builder Factory Method Lazy initialization Prototype Singleton
|
Structural
|
Adapter Bridge Composite Container Decorator Extensibility Facade Flyweight Proxy Pipes and Filters Private Class
|
|
Design Pattern
|
Sub-Design Pattern
|
Behavioral
|
Chain of responsibility Command Event listener Interpreter Iterator Mediator Memento Observer State Strategy Template method Visitor Single-serving visitor Hierarchical visitor
|
Concurrency
|
Action at a distance Active Object Balking pattern Double checked locking Guarded suspension Half-Sync/Half-Async Leaders/followers Monitor Object Read write lock Scheduler Thread pool Thread-Specific Storage
|
Event handling
|
|
Architecture
|
|
|
|
See also
Modeling
Books
top
- AntiPatters, by William J. Brown, Raphael C. Malveau, Hays W. McCormick III, Thomas J. Mowbray. An AntiPattern is a literary form that describes a commonly occurring solution to a problem that generates decidedly negative consequences.
- Design Patterns, Elements of Reusable Object Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides.
- Head First Design Patterns by by Elisabeth Freeman, Eric Freeman, Bert Bates, Kathy Sierra.
- Java Design Patterns - A Tutorial. by James W. Cooper.
- Refactoring: Improving the Design of Existing Code by Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts.
Reference
top