According to Christopher Alexander "Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way thay you can use this solution a million times over, without ever doing it the same way twice"
"Design Patterns are descriptions of communicating objects and classes that are customized to solve a general design problem in a particular context" Design Patterns
There are three main types of design patterns "creational", "structural" and behavioral which I hope to discuss in succeding post as I gain more clear understanding of each.