What are design patterns?
- Recurring solutions to design problems
- Constitutes a set of rules to accomplish certain task in software development realm
- Convenient ways of reusing object oriented code between projects and between programmers.
- These describe how different objects should interact with each other without getting entangled with others data model and methods.
- Started from early 1980, formally recognized in 1990(Helm) and 1992 (Enrich Gamma)
- Suggests to program to an interface not to an implementation
- Recommends composition over inheritance
- Creational – These help us to create the objects in an optimized and flexible way, instead of directly instantiating the instances and give the flexibility to create the objects depending on the scenario.
- Structural – Help us to compose a number of objects into a large structure in optimized way.
- Behavioral – It defines and helps us to define the communication between objects and flow of control in the system.
Specific Design Patterns are described separately with other postings.