Another thing I’ve been avoiding for a long time is design patterns and their use in software development. Now it’s time to learn to use those things! What I intend to do is go through all of them and write an example implementation of each in C++ and Python. You’ll find links to respective posts here later.
In software engineering, a design pattern is a general repeatable solution to a commonly occurring problem in software design. A design pattern isn’t 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.
Patterns are often divided into three categories.
Creational design patterns are design patterns that deal with object creation mechanisms, trying to create objects in a manner suitable to the situation. The basic form of object creation could result in design problems or added complexity to the design. Creational design patterns solve this problem by somehow controlling this object creation. Creational design patterns are further categorized into Object-creational patterns and Class-creational patterns. Where, Object-creational patterns deal with Object creation and Class-creational deal with Class-instantiation.
Structural Design Patterns are Design Patterns that ease the design by identifying a simple way to realize relationships between entities.
Behavioral Design Patterns are design patterns that identify common communication patterns between objects and realize these patterns. By doing so, these patterns increase flexibility in carrying out this communication.