What is a design pattern?
As I mentioned in one previous blog post, we need to save time and money to on risk factors to really focus on the work that matters.
The gang of four, Erich Gamma, John Vlissides, Ralph Johnson, and Richard Helm, released the now renowed book Design Patterns: Elements of Reusable Object-Oriented Software.
Design patterns are common solutions to common problems. They focus on what, not how. This means they are language agnostic. One additional benefit they provided is that the communication between developers on different language and companies, can understand each other clearly when using these patterns.
The patterns fall into 3 main categories.
Behavioral patterns refer as their name implies, on behavior. How objects interact with each other. Sending messages, calling methods or extending functionality.
Creational patterns focus on creating objects. Things like how are they created, how many are created or how are they prototyped.
Structural patterns belong to the structure of the objects, like hierarchies and on the proxy pattern, where one communicates messages as a proxy to the real one.
Some are really easy to understand like the Singleton and Proxy, others are more complex like Flyweight and Decorator.