Design Patterns
Now that we’ve covered some principles of object oriented design, let’s start to talk about some of the patterns used. As chatGPT so wonderfully put it for me, “These are tried-and-tested solutions to common problems in software design — basically the “recipes” of architecture.”. Suddenly the usage becomes so much clearer to me, followed up by understanding how important it is. At my day job I have recently learned that a baker without a set of recipes is pretty worthless. It also makes me curious what other parts of baking are analogous to programming. I’m getting close to writing a post on how learning to be a baker has changed my awareness of how practice is key to having a skillset. A recipe is only yours once you’ve made it a few times and really learned how it works. Coding and design patterns will only really make sense to me once I’ve used them a few times.
That being said, here are the three main types of object oriented design patterns:
- Creational Patterns, how objects are created
 - Structural Patterns, how the object itself is structured
 - Behavioral Patterns, how objects communicate information
 
And as a review:
- there are multiple programming styles, such as imperative, declarative, functional, and object oriented
 - object oriented programming has four main concepts: classes are the blueprints to make objects, and each object has attributes (data) and methods (actions/behaviors)
 - oop has four main principles: data abstraction, encapsulation, inheritance, and polymorphism