What Are Design Pattern?
In software engineering, a design pattern is a
general reusable solution to a commonly occurring problem within a given
context in software design.
Where They Come From?
Design patterns
have their roots in the work of Christopher
Alexander, a civil engineer who wrote about his experience in solving
design issues as they related to buildings and towns. It occurred to Alexander
that certain design constructs, when used time and time again, lead to the
desired effect. He documented and published the wisdom and experience he gained
so that others could benefit.
About 15 years
ago, software professionals began to incorporate Alexander's principles into the creation of early design pattern
documentation as a guide to novice developers. This early work led others to
also write about design patterns and culminated in the publication of Design Patterns: Elements of Reusable
Object-Oriented Software in 1995 by Eric Gamma, Richard Helm, Ralph
Johnson, and John Vlissides. This book is considered to be the "coming
out" of design patterns to the software community at large and has been
influential in the evolution of design patterns since.
Design Patterns described 23 patterns that were based on the
experience of the authors at that time. These patterns were selected because
they represented solutions to common problems in software development. Many
more patterns have been documented and cataloged since the publishing of Design Patterns. However, these
23 are probably the best known and certainly the most popular.
Design Patterns
are tried and tested best practices that one may implement himself in his
application. It is a description or template for how to solve a problem that
can be used in many different situations. Reusability and extensibility are the
center of the design pattern motivation.
Do I come across something like this before?
Many of the objects we
utilize in a framework follow a design pattern. A common design pattern
practice is to include the name of the pattern being implemented in the name of
the object or objects. Most of us utilized objects in a framework that included
words such as proxy, adapter, iterator, visitor, and command in the name of the object that
means unknowingly we are utilizing some kind of a design pattern.
E.g. Adapter provides a solution to the scenario in which a
client and server need to interact with one another, but cannot because their
interfaces are incompatible. To implement an Adapter, you create a custom class
that honors the interface provided by the server and defines the server
operations in terms the client expects. This is a much better solution than
altering the client to match the interface of the server.
What are benefits of design pattern?
1)
Design patterns allow us to exploit the experience
of our predecessors using proven arrangements of objects.
2)
Speed up the development process by providing
tested, proven development paradigms.
3)
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.
4)
Design patterns provide general solutions,
documented in a format that doesn't require specifics tied to a particular
problem.
5)
Design patterns make communication between
designers more efficient. Software professionals can immediately picture the
high-level design in their heads when they refer the name of the pattern used
to solve a particular issue when discussing system design.
6)
a standard solution to a common programming
problem enable large scale reuse of S/W
7)
They facilitate the development of highly
cohesive modules with minimal coupling. They isolate the variability that may
exist in the system requirements, making the overall system easier to
understand and maintain.
8)
They
enhance the documentation of software designs.
No comments:
Post a Comment