Design Patterns Overview
Date Published: 12 October 2021
Design patterns provide reusable approaches to common problems and allow for higher level discussions of software design. Learn the basics of design patterns, how to recognize and implement them, how to combine them, and how to learn them.
Design Patterns - An Overview
I've been meaning to write about this topic for over a year now but better late than never, I guess! I've always been fond of design patterns. Each one represents a particular tool or skill that can be added to one's capabilities as a software developer. Knowing only the names of common patterns used in your domain can provide you with the vocabulary necessary to participate more fully in discussions of software design and architecture. Design patterns are a part of the ubiquitous language of software development, and being proficient with (some of) them can really help you improve the quality of your work and potentially provide a boost to your career.
If you're interested in learning more about design patterns, including how to learn them, you may be interested in my Pluralsight course:
Design Patterns Overview (May, 2020)
The course is free this week (11 Oct 2021 - 17 Oct 2021) so don't worry if you don't have a subscription!
I start out introducing design patterns and explaining their origins within the software community. Then I talk about some of their benefits, which underscores why I think it's important to learn design patterns as a programmer or software professional. By this point hopefully you're sold and you'd like to learn more, so naturally the next step is to describe how you should learn design patterns. There are some pretty common missteps that I point out which hopefully will keep you on the right path.
Then we look at design patterns in general from a high level and discuss what comprises a design pattern. They have names, some common kind of structure, and usually some well-known kinds of problems they're well-suited to solving. It's important to remember that a design pattern isn't a component or plugin that you can just use direclty. It's a sort of high level recipe or approach that you can use as a way to build your software. But you still have to do the building!
Finally, I show how to solve some real problems using several design patterns, and I introduce the concept of pattern stacking, by which several individual patterns can be combined together to form an even more powerful and elegant solution. The whole "course" is only 37 minutes long, and since you probably watch courses at faster than 1x speed, you can knock it out in under half an hour easily (leaving you plenty of time to play with the demo code yourself, if you like).
I had a lot of fun creating this course, which serves as an entrypoint to the design patterns learning path on Pluralsight. If you're interested in design patterns and haven't seen this course yet, I encourage you to give it a shot. At only half an hour or so, it's not a huge commitment and even if you've been using patterns for years you may pick up a trick or two.
I have some free reference material on mastering design patterns available on DevIQ as well.
Steve is an experienced software architect and trainer, focusing on code quality and Domain-Driven Design with .NET.