I think patters like Façade, Adapter, Wrapper, Bridge etc describes the way these things would be done anyway.
Singleton or Factory I think are trivial – most of us would figure out ourselves when appropriate.
MVC is useful, but it usually used through a framework, it is not so often used directly.
So what patterns are non-trivial and useful in helping us solve problems better, or make better designs (by using the pattern directly)?
Observer is usually server on a plate, but knowing it can make it easier to think of it when it is not.
I am currently struggling with the Visitor pattern, which seems to be a non-trivial, and helps with design.
It is of course useful to know patterns like Singleton and MVC for other reasons.
If you know the Singleton Design Pattern, you can communicate better and do it in the standard way, so that the code is easier to understand.
Also you can read up on issues about it, and thus code better.
Likewise knowing MVC can make you design better, even if you are not using MVC.
The above reasons are outside the question.
The background for this question is that I often see jobspecs with “Having used Patterns”.
Not that I should respond literally, but it make me think. I can’t really say I use patterns just because what i do can be called a Wrapper or Bridge, or because I use a GUI framework using Observer or MVC.
Apply Head First Design Patterns strategy for learning patterns. First understand the USE and limitations, then the actual pattern.
1) Factory and Abstract Factory
2) Builder
3) Template
4) Null Object but prefer Google Guice library
Optional5) Factory Method
are some that are useful for making clean designs
DO NOT OVERUSE PATTERNS TOO EARLY. BUILD SOLID GRIP ON PRINCIPLES FIRST. AND THEN ALL PATTERNS WILL COME NATURALLY.