Определение: Абстрактная заводская шаблон обеспечивает интерфейс для создания семейств связанных или зависимых объектов без указания их конкретных классов. Этот шаблон особенно полезен, когда система должна быть независимой от того, как ее продукты создаются, составлены и представлены.
Пример использования: представьте себе разработку программного обеспечения для моделирования, которое может представлять различные среды (земля, море, воздух). Используя абстрактный заводской шаблон, вы можете определить заводский интерфейс с методами создания различных типов животных и растений, а затем реализовать различные конкретные фабрики для каждой среды, каждый из которых знает, как создавать объекты, специфичные для этой среды.
Определение: шаблон заводского метода определяет интерфейс для создания объекта, но позволяет подклассам решать, какой класс создать. Этот шаблон делегирует ответственность за экземпляр объекта в подкласс, способствуя свободной связи.
Пример использования: приложение для управления документами может использовать заводский метод для создания различных типов документов (текст, диаграммы, презентации). Каждый тип документа будет иметь свой конкретный класс, а заводский метод в базовом классе будет решать, какой документ создает на основе пользовательского ввода, таким образом изолируя код клиента из конкретных классов документов.
Определение: шаблон строителя отделяет конструкцию сложного объекта от его представления, позволяя одинаково конструкции для разных представлений. Этот шаблон полезен, когда объект должен быть создан в нескольких шагах, и процесс строительства должен быть одинаковым для разных представлений.
Пример использования: рассмотрим автомобильный строитель, который может создавать различные типы автомобилей (спорт, внедорожник, кабриолет). Используя строитель, процесс строительства этих автомобилей может быть стандартизирован в разные этапы (строительство шасси, двигатель, интерьер), в то время как конкретные детали каждого типа автомобиля обрабатываются через различные бетонные строители.
Определение: Цепочка ответственности позволяет передавать запрос по цепочке обработчиков. Каждый обработчик решает, обрабатывать ли запрос или передать его следующему обработчику в цепочке.
Пример использования: в системе HelpDesk запрос поддержки может пройти через различные уровни технической поддержки. Каждый уровень рассматривает запрос и решает, может ли он обрабатывать его или передать его на следующий уровень. Это избегает связи отправителя запроса с конкретным приемником и распределяет ответственность между различными объектами.
Определение: шаблон команды преобразует запрос в независимый объект, который содержит всю необходимую информацию для выполнения действия. Это позволяет параметризовать методы с различными запросами, задержать или стоять в очереди за выполнение запроса и поддержать операции отмены.
Пример использования: в приложении домашней автоматизации, такие команды, как включение/выключение фонарей или регулировка термостата, могут быть инкапсулированы в командные объекты. Эти команды могут быть отправлены различными устройствами, такими как смартфоны или планшеты, и могут быть запланированы или отменены по мере необходимости.
Определение: шаблон прототипа позволяет копировать существующие объекты, не делая кода зависимым от их классов. Каждый прототипированный класс реализует интерфейс прототипа, который обеспечивает метод самого клона.
Пример использования: в игре, вместо того, чтобы создавать объекты с нуля каждый раз в сцене, объект «прототип» может быть клонирован для создания идентичных копий. Это особенно полезно в игровых сценариях, где создание и уничтожение многих подобных объектов может быть интенсивным.
Определение: шаблон Memento позволяет сохранить и восстанавливать предыдущее состояние объекта, не раскрывая детали его внутренней реализации. Этот шаблон полезен для реализации таких функций, как Undo в приложениях, которые требуют возможности вернуться к предыдущим состояниям.
Пример использования: представьте, что вы разработаете текстовый редактор, который позволяет пользователям отменить изменения текста. Каждый раз, когда делается значительное редактирование, состояние редактора сохраняется в объекте Memento. Если пользователь хочет отменить изменения, редактор может восстановить состояние из одного из этих объектов Memento, возвращая текст к своему предыдущему состоянию.
Определение: шаблон медиатора определяет объект, который централизует сложную связь и зависимости между подключенными объектами, способствуя свободной связке и предотвращение непосредственного обращения объектов. Это позволяет лучше справляться с сложными взаимодействиями и улучшает обслуживание кода.
Пример использования: рассмотрим приложение управления воздушным движением. Вместо того, чтобы позволить каждому самолету напрямую общаться со всеми остальными (создавая чрезвычайно сложную систему), посредник - в данном случае, контрольная башня - обрабатывает все сообщения. Самолеты общаются только с контрольной башней, которая затем направляет действия каждого самолета, например, когда и где приземлиться.
Определение: шаблон метода шаблона определяет скелет алгоритма методом, откладывая некоторые шаги, которые будут выполнены подклассами. Это позволяет пересмотреть определенные шаги алгоритма без изменения структуры алгоритма.
Пример использования: Подумайте об автоматической структуре тестирования. Метод шаблона может быть использован для определения стандартной структуры испытаний, где метод шаблона устанавливает поток выполнения теста (настройка, выполнение, очистка). Затем конкретные тестовые подклассы могут настраивать каждый шаг путем реализации методов для настройки, фактического выполнения теста и операций очистки после тестирования.
Определение: шаблон наблюдателя устанавливает взаимосвязь между объектами от одного ко многим, так что, когда один объект меняет состояние, все его иждивенцы уведомляются и обновляются автоматически. Этот шаблон особенно полезен для реализации систем уведомлений о распределенном событии, где изменения в одном состоянии должны быть отражены в режиме реального времени в других системах или компонентах.
Пример использования: рассмотрим систему управления климатом в умном здании. Датчики температуры (издатели) непрерывно контролируют окружающую среду и, в случае значительных изменений, отправляют обновления на различные устройства (наблюдатели), такие как кондиционеры и системы отопления, которые соответствующим образом скорректируют оптимальную температуру. Таким образом, система климат -контроля может динамически реагировать на условия окружающей среды без прямого вмешательства человека, обеспечивая комфорт и энергоэффективность.
Определение: шаблон состояния позволяет объекту изменять свое поведение при изменении его внутреннего состояния. Похоже, что объект меняет свой класс. Этот шаблон полезен для обработки сложных ситуаций изменения состояния, уменьшая необходимость в условиях ветвления (if-else или коммутатор) в коде.
Пример использования: представьте, что вы разработаете приложение для управления жизненным циклом онлайн -заказа. Порядок может быть в различных состояниях, таких как «обработка», «отправлено», «доставлен». Используя шаблон состояния, вы можете определить абстрактный класс OrderState с такими методами, как Process (), Ship () и Deliver (). Каждое бетонное состояние (например, Processingstate, Speckedstate, Provestatate) будет реализовать эти методы для правильного обработки переходов состояния. Контекст (например, класс порядка) поддерживает ссылку на текущее состояние и делегирует операции состояния в конкретные объекты состояния, что позволяет поведение приказа изменять на основе его текущего состояния без прямого вмешательства из кода клиента.
Определение: Стратегия - это поведенческая схема, которая позволяет определять семейство алгоритмов, инкапсулировать их в выделенный класс и делать объекты взаимозаменяемыми в этом контексте. Этот подход допускает различные алгоритмы независимо от клиентов, использующих их.
Пример использования: представьте себе приложение для электронной коммерции, которое необходимо для реализации различных стратегий расчета налогов в зависимости от страны клиента. При схеме стратегии вы можете определить интерфейс Tax -Stategy с помощью метода CalcuLateTax (), а затем реализовать различные конкретные стратегии для различных налоговых контекстов, таких как UstaxStrategy, Eutaxstrategy и Asiataxstrategy.
Определение: шаблон итератора предоставляет способ получить доступ к элементам последовательного объекта агрегата без обнаружения его основного представления. Этот шаблон особенно полезен для управления различными режимами обхода коллекции.
Пример использования: рассмотрим сбор данных, таких как дерево или график. Используя шаблон итератора, вы можете предоставить равномерный доступ к элементам этих сложных структур данных без кода клиента, чтобы справиться с различиями между различными структурами. Например, у вас могут быть разные итераторы, такие как Dexifirstiterator и ширина, чтобы пройти график.
Определение: шаблон посетителя позволяет отделять алгоритм от структуры объектов, на которых он работает. Этот шаблон предоставляет способ добавить новые операции в существующие классы, не изменяя их.
Пример использования: представьте, что у вас есть система управления клиентами в контексте страхования. Образец посетителя позволяет объекту пройти список клиентов и отправлять им персонализированные сообщения о страховании.
Определение: шаблон адаптера позволяет несовместимым интерфейсам работать вместе. Он действует как мост между двумя несовместимыми интерфейсами, превращая интерфейс существующего класса в другой интерфейс, ожидаемый клиентами.
Пример использования: Предположим, у вас есть новый интерфейс для рендеринга, но существующая библиотека предлагает аналогичные функции с другим интерфейсом. Вместо того, чтобы переписать существующую библиотеку, вы можете использовать адаптер, чтобы сделать существующую библиотеку работать с новым интерфейсом рендеринга, что обеспечивает бесшовную интеграцию.
Определение: мост -мост - это структурный шаблон, который отделяет абстракцию от ее реализации, позволяя им варьироваться независимо. Он используется для разделения большого класса или набора тесно связанных классов на две отдельные иерархии - абстракция и реализация - которые могут быть разработаны и изменены независимо.
Пример использования: в приложении для доставки пиццы существуют различные виды пиццы, каждая из которых со своим уникальным вкусом и различные виды ресторанов с различными стилями приготовления пищи. Когда будет расположен заказ на пиццу, в приложении используется образец моста, чтобы гарантировать, что пицца составлена в соответствии с предпочтениями клиента и приготовлена в соответствии с конкретным стилем выбранного ресторана. Таким образом, узор моста облегчает интеграцию между различными типами пиццы и различными стилями приготовления пищи ресторанов, что позволяет эффективно и персонализированная доставка.
Определение: составной паттерн - это структурная картина, которая позволяет равномерно обрабатывать группы объектов и отдельных объектов. Этот шаблон организует объекты в структуру дерева, чтобы представлять частичную иерархию. Это позволяет пользователям равномерно работать с отдельными объектами и композициями объектов.
Пример использования: представьте, что у вас есть система управления подарочной коробкой, содержащую отдельные предметы и другие коробки. Клиент создает основную коробку и добавляет некоторые предметы, такие как книги и видеоигры, а также меньшую коробку, содержащую книгу. Затем рассчитывается общая цена всех предметов внутри основной коробки. Композитный шаблон позволяет обрабатывать отдельные объекты и композиции объектов одинаково, упрощая код и делая операции равномерными как на отдельных объектах, так и на группах объектов.
Определение: шаблон декоратора - это структурный шаблон, который позволяет динамически добавлять дополнительные обязанности к объектам, не изменяя их структуру посредством наследования. Этот шаблон обеспечивает гибкую альтернативу получению расширенных классов для расширения функциональности.
Пример использования: представьте, что у вас есть система уведомлений. Узор декоратора позволяет расширять функциональность различных социальных платформ. Таким образом, уведомления могут быть отправлены по различным каналам, не изменяя код.
Определение: Фасадный шаблон - это структурный шаблон, который обеспечивает унифицированный интерфейс для набора интерфейсов в подсистеме. Этот шаблон определяет интерфейс высокого уровня, который облегчает подсистему в использовании.
Пример использования: рассмотрите сложную систему для управления мультимедийными устройствами в автомобиле, который включает подсистемы для подключения аудио, видео и Bluetooth. Фасад может предложить простой интерфейс для запуска музыки, остановки видео или управления звонками, скрывая сложность и зависимости между подсистемами.
Определение: шаблон в полусреднем весе-это структурный шаблон, который использует совместное использование для эффективной поддержки большого количества мелкозернистых объектов. Это особенно полезно, когда большая часть состояния объекта может быть разделена и сделана внешней по отношению к нему.
Пример использования: представьте, что у вас есть приложение для управления типами книг. Он использует фабрику для создания и обмена экземплярами типов книг. Таким образом, если один и тот же тип книги запрашивается несколько раз, один и тот же объект возвращается вместо того, чтобы создавать новый каждый раз. Это сохраняет память и улучшает общую производительность приложения.
Определение: Прокси -шаблон предоставляет суррогат или заполнитель для другого объекта для контроля доступа к нему. Этот шаблон используется, когда вы хотите навязать ограничения на доступ к объекту, ленивую нагрузку или обеспечить прозрачную локализацию объекта в распределенной среде.
Пример использования: в управлении доступа к файловой системе можно использовать прокси для управления операциями пользователей в файлах. Прокси проверяет учетные данные пользователя, прежде чем разрешать фактический доступ к файлу, обеспечивая дополнительную безопасность.
Определение: Одиночный шаблон - это творческий шаблон, который гарантирует, что класс имеет только один экземпляр, обеспечивая глобальную точку доступа к этому экземпляру.
Пример использования: в приложении, шаблон Singleton можно использовать для управления конфигурацией приложения. Объект Singleton может содержать все конфигурации, которые остаются постоянными во время выполнения приложения и могут быть прочитаны из различных частей программы.