Рубрики
Без рубрики

UML-диаграмма для примеров шаблонов проектирования GoF в Java

В этом посте перечислены UML-диаграммы примеров шаблонов проектирования GoF, написанных на Java. Диаграммы UML таковы… Помеченный uml, gof, шаблонами проектирования, java.

В этом посте перечислены UML-диаграммы примеров шаблонов проектирования GoF, написанных на Java. Диаграммы UML отображаются с помощью Карта диаграмм . Если вы хотите узнать о Карте-схеме , см. этот пост . Кроме того, вы можете получить данные модели UML и Java-код примеров из здесь .

содержание

  • Поведенческие паттерны
    • Цепочка ответственности
    • Команда
    • Переводчик
    • Итератор
    • Посредник
    • Сувенир
    • Наблюдатель
    • Государство
    • Стратегия
    • Шаблонный метод
    • Посетитель
  • Модели создания
    • Абстрактная фабрика
    • Строитель
    • Заводской способ
    • Прототип
    • Синглтон
  • Структурные закономерности
    • Адаптер
    • Мост
    • Составной
    • Оформитель
    • Фасад
    • Наилегчайший вес
    • Полномочие
  • Рекомендации
  • Связи

Намерение шаблона Избегайте соединения отправителя запроса с его получателем, предоставляя нескольким объектам возможность обработать запрос. Соедините принимающие объекты в цепочку и передайте запрос по цепочке до тех пор, пока объект не обработает его (Шаблоны проектирования: Элементы многоразового объектно-ориентированного программного обеспечения).

Об Этом Пример Среди сторонников возникает проблема, и с ней справится тот сторонник, который может с ней справиться. Ниже представлены четыре типа сторонников: Ленивый сторонник не справляется ни с какими проблемами Капризный сторонник справляется со странными проблемами с удостоверением личности Специальный сторонник решает проблему с идентификатором цели. Ограниченный сторонник справляется с проблемами ниже предельного идентификатора. Результат выполнения: Java-код: || Посмотреть на GitHub

Откройте диаграмму в полноэкранном режиме

Намерение шаблона Инкапсулируйте запрос как объект, тем самым позволяя вам параметризовать клиентов с различными запросами, запросами очереди или журнала и поддерживать отменяемые операции (Шаблоны проектирования: Элементы многоразового объектно-ориентированного программного обеспечения).

Об Этом Пример Простое приложение для рисования: Нарисуйте путь с точками, перетаскивая мышь. Вернитесь к одному предыдущему рисунку, нажав кнопку Отменить. Сотрите весь рисунок, нажав кнопку Очистить. Результат выполнения: Java-код: || Посмотреть на GitHub

Откройте диаграмму в полноэкранном режиме

Намерение шаблона Учитывая язык, определите представление для его грамматики вместе с интерпретатором, который использует представление для интерпретации предложений на языке (Шаблоны проектирования: Элементы многоразового объектно-ориентированного программного обеспечения).

Об Этом Пример Переводчик для мини-языка для управления радиоуправляемым автомобилем. Он анализирует следующий синтаксис, состоящий из команд “вперед”, “влево”, “вправо” и “повторить”: Войдите в полноэкранный режим Выход из полноэкранного режима Результат выполнения: Java-код: || Посмотреть на GitHub

Откройте диаграмму в полноэкранном режиме

Намерение шаблона Предоставить способ последовательного доступа к элементам агрегированного объекта, не раскрывая его базовое представление (Шаблоны проектирования: Элементы многоразового объектно-ориентированного программного обеспечения).

Об Этом Пример Добавляйте книги на книжную полку и отображайте названия книг по очереди. Результат выполнения: Java-код: || Посмотреть на GitHub

Откройте диаграмму в полноэкранном режиме

Намерение шаблона Определите объект, который инкапсулирует, как взаимодействует набор объектов. Посредник способствует слабой связи, не позволяя объектам явно ссылаться друг на друга, и позволяет независимо изменять их взаимодействие (Шаблоны проектирования: Элементы многоразового объектно-ориентированного программного обеспечения).

Об Этом Пример Показать диалоговое окно входа в систему для ввода имени пользователя и пароля. Диалоговое окно содержит следующие элементы: Переключатели “Гость” и “Вход” Текстовые поля “Имя пользователя” и “Пароль” Кнопки “ОК” и “Отмена” И измените редактируемые свойства элементов в зависимости от состояния переключателей и текстовых полей. Результат выполнения: Java-код: || Посмотреть на GitHub

Откройте диаграмму в полноэкранном режиме

Намерение шаблона Не нарушая инкапсуляции, фиксируйте и выводите внутреннее состояние объекта наружу, чтобы объект можно было вернуть в это состояние позже (Шаблоны проектирования: Элементы многоразового объектно-ориентированного программного обеспечения).

Об Этом Пример Игра в кости, в которой деньги увеличиваются и уменьшаются: Игрок встряхивает кубик, и число определяет следующее состояние. Если количество кубиков четное, то деньги игрока удваиваются, а если нечетное, то деньги игрока уменьшаются вдвое. Если деньги игрока составляют менее половины от максимальной суммы, они возвращаются к максимальной сумме. Игра повторяется Результат выполнения: Java-код: || Посмотреть на GitHub

Откройте диаграмму в полноэкранном режиме

Намерение шаблона Определите зависимость “один ко многим” между объектами, чтобы при изменении состояния одного объекта все его зависимые элементы автоматически уведомлялись и обновлялись (Шаблоны проектирования: Элементы многоразового объектно-ориентированного программного обеспечения).

Об Этом Пример Наблюдатели наблюдают за объектом-объектом, имеющим числовое значение, и отображают это значение. Форматы отображения – цифры и столбчатые диаграммы. Результат выполнения: Java-код: || Посмотреть на GitHub

Откройте диаграмму в полноэкранном режиме

Намерение шаблона Разрешить объекту изменять свое поведение при изменении его внутреннего состояния. Объект, по-видимому, изменит свой класс (Шаблоны проектирования: Элементы многоразового объектно-ориентированного программного обеспечения).

Об Этом Пример Надежная система безопасности, статус которой меняется со временем. Когда вы нажимаете кнопку в диалоговом окне, отображаемое сообщение будет меняться в зависимости от того, день сейчас или ночь. Внутреннее время диалога увеличивается на один час за каждую секунду реального времени. Результат выполнения: Java-код: || Посмотреть на GitHub

Откройте диаграмму в полноэкранном режиме

Намерение шаблона Определите семейство алгоритмов, инкапсулируйте каждый из них и сделайте их взаимозаменяемыми. Стратегия позволяет алгоритму изменяться независимо от клиентов, которые его используют (Шаблоны проектирования: Элементы многоразового объектно-ориентированного программного обеспечения).

Об Этом Пример Игра в камень-ножницы-бумагу. Доступны две стратегии: Случайная стратегия: показ случайного сигнала рукой. Зеркальная стратегия: отображение сигнала руки от сигнала руки предыдущего противника. Результат выполнения: Java-код: || Посмотреть на GitHub

Откройте диаграмму в полноэкранном режиме

Намерение шаблона Определите основу алгоритма в операции, отложив некоторые шаги для клиентских подклассов. Метод шаблонов позволяет подклассам переопределять определенные этапы алгоритма без изменения структуры алгоритмов (Шаблоны проектирования: Элементы многоразового объектно-ориентированного программного обеспечения).

Об Этом Пример Отображать символ или строку повторно 5 раз. Результат выполнения: Java-код: || Посмотреть на GitHub

Откройте диаграмму в полноэкранном режиме

Намерение шаблона Представляют операцию, которая должна быть выполнена над элементами структуры объекта. Посетитель позволяет определить новую операцию без изменения классов элементов, с которыми она работает (Шаблоны проектирования: Элементы многоразового объектно-ориентированного программного обеспечения).

Об Этом Пример Посетитель посещает файловую систему, состоящую из файлов и каталогов, и отображает список файлов/каталогов. Результат выполнения: Java-код: || Посмотреть на GitHub

Откройте диаграмму в полноэкранном режиме

Намерение шаблона Предоставить интерфейс для создания семейств связанных или зависимых объектов без указания их конкретных классов (Шаблоны проектирования: Элементы многоразового объектно-ориентированного программного обеспечения).

Об Этом Пример Создайте иерархическую коллекцию ссылок в виде HTML-файла. Он может быть создан как в табличном, так и в виде списка. Результат выполнения: Java-код: || Посмотреть на GitHub

Откройте диаграмму в полноэкранном режиме

Намерение шаблона Отделите построение сложного объекта от его представления, чтобы один и тот же процесс построения мог создавать разные представления (Шаблоны проектирования: Элементы многоразового объектно-ориентированного программного обеспечения).

Об Этом Пример Создавайте документы в формате HTML и текстовом формате. В одном и том же процессе строительства можно создавать разные документы. Результат выполнения: Java-код: || Посмотреть на GitHub

Откройте диаграмму в полноэкранном режиме

Намерение шаблона Определите интерфейс для создания объекта, но позвольте подклассам решать, какой класс создавать. Фабричный метод позволяет классу отложить создание экземпляра для подклассов (Шаблоны проектирования: Элементы многоразового объектно-ориентированного программного обеспечения).

Об Этом Пример Речь идет о фабрике по производству кредитных карт. Фабрика определяет, как создать кредитную карту, но фактическая кредитная карта создается Фабрикой кредитных карт. “Создать продукт()” называется фабричным методом, и он отвечает за изготовление объекта. Результат выполнения: Java-код: || Посмотреть на GitHub

Откройте диаграмму в полноэкранном режиме

Намерение шаблона Укажите типы объектов для создания с использованием прототипного экземпляра и создайте новые объекты, скопировав этот прототип (Шаблоны проектирования: Элементы многоразового объектно-ориентированного программного обеспечения).

Об Этом Пример Отобразить строку, заключенную в рамку или нарисованную подчеркиванием. Клиент (Основной) регистрирует экземпляры подкласса Display в классе Manager. При необходимости класс Manager запрашивает у этих зарегистрированных экземпляров возврат клона. Клиенту (Основному) требуется, чтобы возвращенные клоны отображались. Результат выполнения: Java-код: || Посмотреть на GitHub

Откройте диаграмму в полноэкранном режиме

Намерение шаблона Убедитесь, что класс имеет только один экземпляр, и обеспечьте глобальную точку доступа к нему (Шаблоны проектирования: Элементы многоразового объектно-ориентированного программного обеспечения).

Об Этом Пример Проверьте, получен ли один и тот же экземпляр. Результат выполнения: Java-код: || Посмотреть на GitHub

Откройте диаграмму в полноэкранном режиме

Намерение шаблона Преобразуйте интерфейс класса в другой интерфейс, ожидаемый клиентами. Адаптер позволяет классам работать вместе, что невозможно в противном случае из-за несовместимых интерфейсов (Шаблоны проектирования: Элементы многоразового объектно-ориентированного программного обеспечения).

Об Этом Пример Отобразите заданную строку следующим образом Войдите в полноэкранный режим Выход из полноэкранного режима или отобразите его следующим образом. Войдите в полноэкранный режим Выход из полноэкранного режима Результат выполнения: Java-код: || Посмотреть на GitHub

Откройте диаграмму в полноэкранном режиме

Намерение шаблона Отделите абстракцию от ее реализации, чтобы они могли различаться независимо (Шаблоны проектирования: Элементы многоразового объектно-ориентированного программного обеспечения).

Об Этом Пример Отображать только одну строку или отображать указанное количество строк. Результат выполнения: Java-код: || Посмотреть на GitHub

Откройте диаграмму в полноэкранном режиме

Намерение шаблона Объединяйте объекты в древовидные структуры для представления иерархий целых частей. Composite позволяет клиентам единообразно обрабатывать отдельные объекты и композиции объектов (Шаблоны проектирования: Элементы многоразового объектно-ориентированного программного обеспечения).

Об Этом Пример Представляет файловую систему, состоящую из файлов и каталогов. Элемент файловой системы позволяет единообразно обрабатывать файлы и каталоги. Результат выполнения: Java-код: || Посмотреть на GitHub

Откройте диаграмму в полноэкранном режиме

Намерение шаблона Динамически прикрепляйте дополнительные обязанности к объекту. Декораторы предоставляют гибкую альтернативу подклассам для расширения функциональности (Шаблоны проектирования: Элементы многоразового объектно-ориентированного программного обеспечения).

Об Этом Пример Отобразите строку с декоративными рамками. Рамки можно комбинировать произвольно. Результат выполнения: Java-код: || Посмотреть на GitHub

Откройте диаграмму в полноэкранном режиме

Намерение шаблона Обеспечить единый интерфейс для набора интерфейсов в подсистеме. Фасад определяет интерфейс более высокого уровня, который упрощает использование подсистемы (Шаблоны проектирования: Элементы многоразового объектно-ориентированного программного обеспечения).

Об Этом Пример Создайте простую домашнюю страницу с помощью фасада (Создатель страницы). Фасад получает информацию из библиотеки данных и использует ее для создания HTML-файла. Результат выполнения: Java-код: || Посмотреть на GitHub

Откройте диаграмму в полноэкранном режиме

Намерение шаблона Используйте общий доступ для эффективной поддержки большого количества мелкозернистых объектов (Шаблоны проектирования: Элементы многоразового объектно-ориентированного программного обеспечения).

Об Этом Пример Отображать строку, состоящую из больших символов (только 0-9 цифр). Большие символьные объекты не создаются до тех пор, пока они не понадобятся. И созданные объекты используются повторно. Результат выполнения: Java-код: || Посмотреть на GitHub

Откройте диаграмму в полноэкранном режиме

Намерение шаблона Предоставьте суррогат или заполнитель для другого объекта, чтобы контролировать доступ к нему (Шаблоны проектирования: Элементы многоразового объектно-ориентированного программного обеспечения).

Об Этом Пример Печать на именованном принтере. Настройка и изменение имени принтера осуществляется через прокси-сервер (Прокси-принтер). Во время печати создайте экземпляр реального объекта (реального принтера) в первый раз. Результат выполнения: Java-код: || Посмотреть на GitHub

Откройте диаграмму в полноэкранном режиме

  • Гамма, Э. Шаблоны проектирования: Элементы многоразового объектно-ориентированного программного обеспечения, Аддисон-Уэсли, 1994
  • Хироши Юки. Изучение шаблонов проектирования на Java [На японском языке], Издательство Softbank, 2004

Оригинал: “https://dev.to/takaakit/uml-diagram-for-gof-design-pattern-examples-in-java-5fe5”