Паттерны проектирования — это шаблоны решений типичных задач разработки ПО. Они делятся на три категории: порождающие (Singleton, Factory Method, Abstract Factory, Builder, Prototype), структурные (Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy) и поведенческие (Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method, Visitor).