Brendon,
As you might already know, design pattern is a fancy word for a set of well known problem-solution combinations that have been identified and defined based on past experiences. So to know when to apply what pattern, you should first understand what kind of problem each pattern solves. And design patterns are not just meant for some designers. As a programmer, if are familiar with these patterns, it will only make you better. Also design patterns might be confusing and intimidating for some beginners. So starting with looking at some code samples might help you understand. There are so many resources out there, but see if this one helps
Design Patterns. Good luck.
Velu Kasirajah