Article Preview
Top1. Introduction
Design Patterns are based on reformation of existing programming practice. Design Patterns are classical solutions to commonly occurring problems in software design. They are plan that can be taken and customized to solve a particular design problem in your code (Refactoring Guru, n.d.). In software engineering, design patterns are ideas that have been useful in one practical context of software design and will probably be useful in others. They provide a firm and stable engineering backbone around which the rest of the system's architecture should be built. The goal of patterns within the software community is to create a body of literature to help software developers resolve repeatedly problems encountered throughout all of software development.
Gamma et al. (1994) describes a design pattern as a proven solution for a general design problem. It consists of communicating classes
And objects that are customized to solve the problem in a particular context. Each pattern describes a problem which occurs many times in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a whenever you want, without ever doing it the same way twice (Gamma, Helm, Johnson et al., 1994).
Top3. Elements Of Design Pattern
The following essential elements should be clearly recognizable upon reading a pattern.
3.1. Name
It must have a meaningful name. This allows us to use a single word or short phrase to refer to the pattern, and the knowledge and structure it describes. It would be very unwieldy to have to describe or even summarize the pattern every time we used it in a discussion. Good pattern names form a vocabulary for discussing conceptual abstractions. Sometimes a pattern may have more than one commonly used or recognizable name in the literature. In this case it is common practice to document these nicknames or synonyms under the heading of Aliases or Also Known As. Some pattern forms also provide a classification of the pattern in addition to its name.
3.2. Problem
A statement of the problem which describes its intent: the goals and objectives it wants to reach within the given context and forces. Often the forces oppose these objectives as well as each other.