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.


Becoming a proficient software engineer is not about memorizing the syntax of a language, but rather the ability to solve problems with it.

  1. Creational patterns provide object creation mechanisms that increase flexibility and reuse of existing code.
  2. Structural patterns explain how to assemble objects and classes into larger structures, while keeping these structures flexible and efficient.
  3. 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:

Other patterns:

Concurrency Patterns I actually need to understand how concurrency works.

Actually, I had an intro to this with my Database course.

Saw this after