A design pattern is a software solution to known recurring problem in a particular context. Design patterns are categorized in 6 different categories as follows: Design, Creational, Analysis, Architectural, Structural, Behavioral. Each patterns follows the three-part rule. Part one is there is a context to a problem. Part 2 is there is a force which occurs repeatedly in that context. Part three is there is software configuration which allows these forces to resolve themselves.