This repository include a basic implementation and explanation of classic GoF (abbreviation of Gang of Four) design patterns. Although GoF design patterns are frequently appeared in designing software or architectures, they include a lot of controversial points from a view of its applicability. For example, one of these patterns is too fundamental to define its concept as a versatile pattern, and another one can be used only for quite specific problems.
Common advantages and disadvantages of applying design patterns to software development are listed in this article
- Design patterns use object-oriented concepts like decomposition, inheritance and polymorphism.
- Design patterns make your lives easy as a programmer as these make possible you to get benefit from the experience and knowledge of your predecessors those have worked on the same type of project .Thus make it easy for further development of the applications.
- Appropriate design patterns used in development of applications make development fast and easily documented.
- The benefit of design patterns lies in reusability and extensibility of the already developed applications.
- Design patterns are more sophisticated and advance approaches than basic data structures such as arrays, linked lists, and binary trees.
- All design patterns use self-descriptive naming conventions and a design pattern based name of program objects captures a basic idea about the working and use of that particular object.
- Design pattern utilize descriptive words such as proxy, adapter, iterator, visitor, and command in the name of the objects.
- Design patterns improve software development process.
The readers of this article should learn the following contents in advance:
Contents | Necessity | Reference |
---|---|---|
SOLID software design principle | should | Reddy 20111 |
Object Oriented Analysis and Design (OOAD) | should | |
UML 2.0 | must | |
Coding Experience with C++/Java/JavaScript | should |
The following typographical conventions are used in this article:
Symbolic representation | Description |
---|---|
[URL link] | Reference to ensure English correctness in both grammatical and idiomatic usage. |
Italic style | A title of published book |
Footnotes
-
Reddy, Martin. API Design for C++. Elsevier, 2011. ↩