Design Pattern
Design patterns are reusable solutions to common problems. Think of them like high-level programming abstractions. Briefly covered in CS138. Covered in CS247.
Links
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.
Implementations: https://refactoring.guru/design-patterns/cpp
Warning
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
Other patterns:
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.
Saw this after https://www.youtube.com/watch?v=7_26inaLeYM&ab_channel=ApexAI