Becoming a proficient software engineer is not about memorizing the syntax of a language, but rather the ability to solve problems with it.
- Creational patterns provide object creation mechanisms that increase flexibility and reuse of existing code.
- Structural patterns explain how to assemble objects and classes into larger structures, while keeping these structures flexible and efficient.
- Behavioural patterns take care of effective communication and the assignment of responsibilities between objects.
With the examples provided, the design patterns demonstrated are merely simplistic implementations. All of these patterns truly shine when used at scale.
Does becoming a Great Programmer require you to know design patterns?
I would argue that yes. When you first get started, you probably use design patterns subconsciously. However, being aware of all these design patterns will really make you a much better programmer, since you will know what you don’t know. You will have more options, and can make more informed decisions.
Some Design Patterns in C++
I learned these in CS247:
- Iterator Design Pattern
- Decorator Design Pattern
- Observer Design Pattern
- Model View Controller
- Strategy Design Pattern
- Template Method Design Pattern
- Non-Virtual Interface Pattern
- Adapter Design Pattern
- Visitor Design Pattern
- Curiously Recurring Template Pattern
- Command Design Pattern
- Bridge Design Pattern
Concurrency Patterns https://www.baeldung.com/concurrency-principles-patterns I actually need to understand how concurrency works.
Actually, I had an intro to this with my Database course.