A design pattern is a proven solution for a general design problem. It consists of communicating classes and objects that are customised to solve the problem in a particular context. . it captures design experience of experienced programmers.
A designer who is familiar with such patterns can apply them immediately to design problems without having to rediscover them. Thus design patterns make it easier to reuse successful designs and architectures.
Design patterns help us choose design alternatives that make a system reusable and avoid alternatives that compromise reusability. Design patterns can even improve the documentation and maintenance of existing systems by furnishing an explicit specification of class and objects interactions and their underlying ‘intent’.
In short design patterns help a designer to reuse the existing patterns the way we use the source code library.