Programming - Design patterns
In software engineering, a design
pattern is a general reusable solution to a commonly
occurring problem in software design. A design pattern is not a
finished design that can be transformed directly into code. It
is a description or template for how to solve a problem that
can be used in many different situations. Object-oriented
design patterns typically show relationships and interactions
between classes or objects, without specifying the final
application classes or objects that are involved. Algorithms
are not thought of as design patterns, since they solve
computational problems rather than design problems.
Design patterns can speed up the development process by
providing tested, proven development paradigms. Effective
software design requires considering issues that may not become
visible until later in the implementation. Reusing design
patterns helps to prevent subtle issues that can cause major
problems, and it also improves code readability for coders and
architects who are familiar with the patterns.
In order to achieve flexibility, design patterns usually
introduce additional levels of indirection, which in some cases
may complicate the resulting designs and hurt application
performance.
and
Some significant design
patterns are outlined here.