Design patterns represent the accumulated knowledge of the community of software developers of standardised solutions to recurring problems.
They allow software developers to make use of the knowledge of past designers. Many design projects are confronted with similar problems that demand similar solutions. A design pattern is an abstraction of a solution for a particular class of problems. MVC or model view controller triad is a classical example of design pattern. It was introduced 1980 in the Smalltalk system.
The book that introduced the term design pattern to software development is Design Patterns: elements of reusable object-oriented software (commonly shortened to GoF -- Gang of Four a reference to the four authors) says:
- Design patterns solve specific design problems and make object-oriented designs more flexible and elegant, and ultimately reusable. They help designers reuse successful designs by basing new designs on prior experience. A designer who is familiar with such patterns can apply them immediately to design problems without having to rediscover them.
Each pattern comes up with the problem that happens again and again among programmers. Then it shows a typical solution for such a problem, if not the best solution, along with the trade-off, which is a convenient assessment to make prior to applying a potentially costly solution. It is important that patterns accompany a name because it makes possible to describe problems, solutions and talk about them with other folks.
For example the classical MVC pattern is actually a combination of three patterns listed below - Observer, Composite and Strategy. It is broadly used today.
Frequent problems that occur in programming are sometimes less commonly called anti-pattern.
See also amelioration pattern
Fundamental patterns
- Delegation pattern
- Interface pattern
- Proxy pattern
- Immutable pattern
- Marker Interface pattern
- Abstract factory pattern
- Anonymous subroutine objects pattern
- Builder pattern
- Factory method pattern
- Prototype pattern
- Singleton pattern - an object which is unique in its kind in the whole system
- Adapter pattern
- Bridge pattern
- Composite pattern - a pattern to build large structures
- Container pattern
- Decorator pattern
- Extensibility pattern
- Facade pattern
- Flyweight pattern
- Pipes and filters
- Proxy pattern
- Breadth first recursion
- Chain of responsibility pattern
- Command pattern
- Currying concept
- Event listener
- Interpreter pattern
- Iterator pattern
- Mediator pattern
- Memento pattern
- Observer pattern - one object acts when some value of another objects changes
- State pattern
- Strategy pattern - make an algorithm pluggable
- Template method pattern
- Visitor pattern
- Hierarchical visitor pattern
- Action at a distance pattern
- Balking pattern
- Guarded suspension
- Scheduler pattern
- Read write lock pattern
- Double checked locking pattern
- Disable job requests while running job pattern
- Scheduled task pattern
- User interface pattern
- Disable job requests while running job pattern
- Community life cycle
- Democracy pattern
- Melting pot
- Constraint system
Table of contents |
2 References 3 External links |
Related Topics
References
External links