Design Patterns A design pattern is a general repeatable solution to a commonly occurring problem in software design. It is a description or template for how to solve a problem that can be used in many different situations. Types of Design Patterns Creational design patterns - These patterns are all about Class instantiation. eg: Factory, Build, Singleton, Protoype, etc. Structural design patterns - These patterns are all about Class and Object composition. eg: Adapter, Bridge, Composite, Facade, Proxy, etc. Behavioural design patterns - These design patterns are all about Class's objects communication. eg: Strategy, Observer Patterns, etc.