Паттерны проектирования
Описывают как создать объект(ы)
Определяют взаимодействие между компонентами
Превращает один интерфейс в другой
Отделяет абстракцию от реализации, позволяя менять и то, и другое
Вместо наследования позволяет расширять функциональность
Простой интерфейс для сложной подсистемы
Определяют, как компоненты общаются друг с другом
Позволяет обойти все элементы составного объекта без раскрытия внутреннего представления
Позволяет сохранить состояние объекта во внешней памяти без раскрытия инкапсуляции для дальнейшего восстановления
При изменении состояния объекта все слушатели оповещаются
Нужно дополнить примерами и описаниями