Design patterns are well-tested solutions to common problems in software development.
The primary goal of any designing pattern is to help you structure your code so it is flexible and resilient.
When it comes to your designs, you have to first understand a pattern and then adapt it to your own code.
They also allow you to stay focused on high level design, rather than getting bogged down in low level code.
Think of design patterns as the ultimate reusing software development. Remember, design patterns are built from years of experience by software developers. There going to save you not only time, but also lots of trial and error. So when you learn a pattern, you’re not reusing code, you’re reusing experience.