В этом посте перечислены 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
- Схема Карта: отслеживание элементов UML/SysML на диаграммах
- Примеры шаблонов проектирования в Java
Оригинал: “https://dev.to/takaakit/uml-diagram-for-gof-design-pattern-examples-in-java-5fe5”