Design Patterns provide easy to recognize and use OOP solutions to common problems. They're inherently easy to maintain, because many people are familiar with them.
Design Patterns also solve specific programming challenges regarding usability and maintainability.
Why should we use them?
Design patterns are, by principle, well-thought out solutions to programming problems. Many programmers have encountered these problems before, and have used these ‘solutions’ to remedy them. If you encounter these problems, why recreate a solution when you can use an already proven answer?
But Remember …..
‘Design patterns are a double-edged sword, can be both lifesaver and deadly at the same time.’