Design patterns are an extremely powerful tool for a developer or architect actively engaged in any development project. Design patterns ensure that common problems are addressed via well-known and accepted solutions. The fundamental strength of patterns rests with the fact that most problems have likely been encountered and solved by other individuals or development teams. As such, patterns provide a mechanism to share workable solutions between developers and organizations. This ensures that correct code is developed more rapidly and reduces the chance that a mistake will occur in design or implementation.
Just as object-oriented programming encourages code reuse, design patterns encourage design reuse.
In order to properly use a design pattern in your design, you must uphold three criteria
Understand your problem
Understand the pattern
Understand how the pattern solves your problem