Паттерны проектирования приложений
Паттерны проектирования - описание взаимодействия объектов и классов, адаптированных для решения общей задачи проектирования в конкретном контексте.
Паттерны проектирования упрощают повторное использование удачных проектных и архитектурных решений. С помощью паттернов можно улучшить качество документации и сопровождения существующих систем, позволяя явно описать взаимодействие классов и объектов, а также причины, по которым система была построена так, а не иначе.
Паттерн проектирования именует, абстрагирует и идентифицирует ключевые аспекты структуры общего решения, которые и позволяют применить его для создания повторного используемого дизайна. Он вычленяет участвующие классы и экземпляры, их роль и отношения, а также функции. При описании каждого паттернавнимание концентрируется на конкретной задаче объектно-ориентированного программирования.
Паттерны не только предоставляют готовые решения, но и формируют единую номенклатуру, понятную другим разработчикам. Не стоит недооценивать силу единой номенклатуры, это одно из величайших преимуществ патернов проектирования.
Инкапсулирует запрос в виде объекта, позволяя тем самым параметризовать клиентов типом запроса, устанавливать очередность запросов, протоколировать их и поддерживать отмену выполнения операций.
Предоставляет интерфейс для создания семейств, связанных между собой, или независимых объектов, конкретные классы которых неизвестны.
Группирует объекты в древовидные структуры для представления иерархий типа "часть-целое". Позволяет клиентам работать с единичными объектами так же как с группами объектов.
Преобразует интерфейс класса в некоторый другой интерфейс, ожидаемый клиентами. Обеспечивает совместную работу классов, которая была бы невозможна без данного паттерна, из-за несовместимости интерфейсов.
Динамически возлагает на объект новые функции. Декораторы применяются для расширения имеющейся функциональности и являются гибкой альтернативой порождению подклассов.
Отделяет абстракцию от реализации, благодаря чему появляется возможность независимо изменять то и другое.
Предоставляет унифицированный интерфейс к множеству интерфейсов в некоторой подсистеме. Определяет интерфейс более высокого уровня, облегчающий работу с подсистемой.
Отделяет конструирование сложного объекта от его представления, позволяя использовать один и тот же процесс конструирования для создания различных представлений.
Определяет интерфейс для создания объектов, при этом выбранный класс инстанцируется подклассами.
Можно избежать жесткой зависимости отправителя запроса от его получателя, при этом зпросом начинает обрабатываться один из нескольких объектов. Объекты-получатели связывают в цепочку, и запрос передается по цепочке, пока какой-то объект его не обработает.
Использует разделение для эффективной поддержки большого числа мелких объектов.
Страница 1 из 2