Design Patterns are a software engineering concept describing recurring solutions to common problems in software design.
The authors Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides are often referred to as the GoF, or Gang of Four.
The site explores the capabilities and pitfalls of object-oriented programming and describes several software design patterns.
Part of the appeal of design patterns is that they can be used uniformly over many different languages and syntaxes.
The basic structure stays the same; only the details change. It is easy to take a pattern implemented in Java and convert it to C++.
Historically the Design Patterns
- have been locked in the heads of the experts or
- buried deep in the source code.
What is required is a principled means of extracting, documenting, conveying, applying, and
preserving this design experience without undue time and effort.
Object Oriented Design is the concept that forces programmers to plan out their code in order to have a better flowing program.
The origins of object oriented design is debated, but the first languages that supported OO were Simula and SmallTalk. The site includes code examples in C++ and Java.
This website is about design patterns that describes simple and elegant solutions
to specific problems in object-oriented software design
Design patterns capture solutions that have developed and evolved overtime
and they are not the designs people tend to generate initially.
They reflect untold redesign and recoding as developers have struggled for greater reuse and
flexibility in their software.
capture these solutions in a succinct and easily applied form.
The design patterns do not require
- unusual language features or
- amazing programming techniques
with which to impress your coworkers.
All can be implemented in standard object-oriented languages
though they might take a little more effort than ad hoc solutions.
Once you understand the design patterns
and have had a revelation with them,
you will not think about object-oriented design in the same way and
will have insights that can make your own designs more flexible, modular and reusable.