Метка: шаблоны проектирования

Прокси (Proxy)

Прокси (Proxy, Заместитель) относиться к классу структурных паттернов. Является суррогатом другого объекта и контролирует доступ к нему. Наиболее частым применением паттерна прокси является ленивая загрузка (lazy load). «Тяжелые» объекты не всегда разумно загружать в момент инициализации. Более правильным решением будет загрузить…

Приспособленец (Flyweight)

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

Фасад (Facade)

Facade (Фасад) относиться к классу структурных паттернов. Представляет собой унифицированный интерфейс вместо набора интерфейсов некоторой подсистемы. Паттерн фасад определяет интерфейс более высокого уровня, который упрощает использование подсистем. Разбиение на подсистемы сложной системы позволяет упростить процесс проектирования, а также помогает максимально снизить…

Декоратор (Decorator)

Decorator (Декоратор) относиться к классу структурных паттернов. Он используется для динамического расширения функциональности объекта. Является гибкой альтернативой наследованию. Сущность работы паттерна декоратор заключается в «оборачивании» готового объекта новым функционалом, при этом весь оригинальный интерфейс объекта остается доступным (декоратор переадресует все запросы…

Компоновщик (Composite)

Composite (Компоновщик) относиться к классу структурных паттернов. Он используется для компоновки объектов в древовидные структуры для представления иерархий, позволяя одинаково трактовать индивидуальные и составные объекты. Ниже на рисунке представлена типичная древовидная структура: Как можно догадаться, composite это составной объект, а leaf это…

Bridge (Мост)

Bridge (Мост) относиться к классу структурных паттернов. Он используется для отделения абстракции от ее реализации так, чтобы то и другое можно было изменять независимо. Если для одной абстракции возможно несколько несколько реализаций, то обычно используют наследование. Однако такой подход не всегда удобен,…

Adapter (Адаптер)

Adapter (Адаптер) относиться к классу структурных паттернов. Он используется для преобразования одного интерфейса в другой, необходимый клиенту. Адаптер обеспечивает совместимость несовместимых интерфейсов, реализуя прослойку. Принцип работы Адаптер наследует открытым способом целевой интерфейс (назовем его Target), и закрытым способом адаптируемый интерфейс (Adaptee). В…

Builder (Строитель)

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

Prototype (Прототип)

Prototype (Прототип) относиться к классу порождающих паттернов. Он используется для задания вида создаваемых объектов на основе объекта прототипа, от которого происходит передача внутреннего состояния. Он сродни фабричному методу, позволяет избавиться от жесткой привязки к классам, и, как следствие, вязкости кода. Существует…

Singleton (Одиночка)

Singleton (Синглтон, одиночка) относиться к классу порождающих паттернов. Он используется для создания всего одного экземпляра класса, и гарантирует, что во время работы программы не появиться второй. Например в схеме MVC, зачастую этот паттерн используется для порождения главного контроллера (фронтового) Суть паттерна Пример [php]…

Factory Method (Фабричный метод)

Перед прочтением ознакомьтесь с введением в паттерны проектирования. Factory Method относиться к классу порождающих паттернов. Они используются для определения и поддержания отношений между объектами. Фабричные методы избавляют проектировщика от необходимости встраивать в код зависящие от приложения классы. Пример Предположим мы создаем…

Abstract Factory (Абстрактная фабрика)

Перед прочтением ознакомьтесь с введением в паттерны проектирования. AbstractFactory относиться к классу порождающих паттернов. Его основное назначение — предоставить интерфейс для создания семейства взаимосвязанных объектов, не специфицируя их классы. Пример Предположим, мы создаем некоторую игру-стратегию. Как и в каждой стратегии, здесь будут…

Шаблоны проектирования (design patterns)

Шаблон проектирования (design pattern) — это общее типовое решение некоторой проблемы, многократно повторяемое в процессе проектирования архитектуры программного продукта. Они показывают отношения и взаимодействия между классами, позволяют сделать систему гибкой и легко изменяемой. За счет их правильного использования повышается коэффициент использования…