> Design patterns are solutions to commonly occurring design problems in developing flexible software using object-oriented programming.
This completely misses the point. You don't "pick a pattern" and choose to apply it.
Design patterns are a way to take your best solution and describe how it works to other programmers.
For example you might say something like: "We used a singleton here because we can barely manage to get one instance working correctly and never intend to write tests".