Design pattern - describes typical solution for a common problem in software design.
Unlike ready-made functions or libraries you can't just copy pattern and paste it to the program. Pattern is not a specific code, but a general concept, which will still need to be adjusted to the needs of your program.
There are three types of design patterns:
- Creational - worried about flexible creation of objects without introducing unnecessary dependencies into the program.
- Structural - show different ways to build relations between objects
- Behavioral - cary about effective communication between objects