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

Шаблоны Проектирования Java – Пример Учебника

Пример учебника по шаблонам проектирования Java – Объяснение творческих, структурных, поведенческих моделей, загрузка pdf, синглтон, фабрика, конструктор, фасад и многое другое.

Автор оригинала: Pankaj Kumar.

Шаблоны проектирования очень популярны среди разработчиков программного обеспечения. Шаблон проектирования-это хорошо описанное решение распространенной проблемы программного обеспечения. Я много писал о шаблонах проектирования java . Вы можете скачать электронную книгу в формате PDF (более 130 страниц), подписавшись на нашу рассылку.

Шаблоны проектирования Java

Некоторые из преимуществ использования шаблонов проектирования заключаются в следующем:

  1. Шаблоны проектирования уже определены и обеспечивают стандартный подход для решения повторяющейся проблемы, поэтому мы экономим время, если разумно используем шаблон проектирования. Существует множество шаблонов проектирования java, которые мы можем использовать в наших проектах на основе java.
  2. Использование шаблонов проектирования способствует повторному использованию , что приводит к более надежному и высокому уровню обслуживания кода. Это помогает снизить общую стоимость владения (TCO) программным продуктом.
  3. Поскольку шаблоны проектирования уже определены, это облегчает понимание и отладку нашего кода. Это приводит к более быстрому развитию, и новые члены команды легко понимают это.

Шаблоны проектирования Java делятся на три категории – креативные , структурные и поведенческие шаблоны проектирования. Этот пост служит указателем для всех статей о шаблонах проектирования java, которые я написал до сих пор.

  • Шаблоны Творческого Проектирования
    • Одноэлементный Шаблон
    • Фабричный Образец
    • Абстрактный Фабричный Узор
    • Шаблон Конструктора
    • Образец Прототипа
  • Структурные Шаблоны Проектирования
    • Шаблон Адаптера
    • Композитный Узор
    • Шаблон прокси-сервера
    • Модель Веса Мухи
    • Узор Фасада
    • Узор Моста
    • Шаблон Декоратора
  • Поведенческие Шаблоны Проектирования
    • Шаблон метода Шаблона
    • Шаблон посредника
    • Схема цепочки ответственности
    • Модель наблюдателя
    • Модель стратегии
    • Шаблон команды
    • Модель состояния
    • Шаблон посетителя
    • Шаблон Интерпретатора
    • Шаблон Итератора
    • Шаблон на Память
  • Различные Шаблоны Проектирования
    • Шаблон дизайна DAO
    • Шаблон Внедрения Зависимостей
    • Шаблон MVC

Видеоуроки по Дизайну Шаблонов

Недавно я запустил видеоуроки по шаблонам дизайна, и они загружены на YouTube. Пожалуйста, подпишитесь на мой канал YouTube, так как я планирую загружать гораздо больше видео на Core Java, Spring Framework и т.д.

Шаблоны Творческого Проектирования

Шаблоны творческого проектирования обеспечивают решение для создания экземпляра объекта наилучшим образом для конкретных ситуаций.

1. Одноэлементный Шаблон

Одноэлементный шаблон ограничивает создание экземпляра класса и гарантирует, что в виртуальной машине Java существует только один экземпляр класса. Это кажется очень простым шаблоном проектирования, но когда дело доходит до реализации, он сопряжен с множеством проблем реализации. Реализация одноэлементного шаблона всегда была спорной темой среди разработчиков. Ознакомьтесь с Шаблон одноэлементного проектирования , чтобы узнать о различных способах реализации одноэлементного шаблона, а также о плюсах и минусах каждого из методов. Это один из наиболее обсуждаемых шаблонов проектирования java.

2. Заводская модель

Шаблон заводского проектирования используется, когда у нас есть суперкласс с несколькими подклассами, и на основе входных данных нам нужно вернуть один из подклассов. Этот шаблон снимает ответственность за создание экземпляра класса с клиентской программы на заводской класс. Мы можем применить одноэлементный шаблон к заводскому классу или сделать заводской метод статичным. Проверьте Шаблон заводского проектирования , например, преимущества программы и заводского шаблона. Это один из наиболее широко используемых шаблонов проектирования java.

3. Абстрактный Фабричный Узор

Абстрактный фабричный узор похож на фабричный узор, и это фабрика фабрик. Если вы знакомы с шаблоном проектирования фабрики в java, вы заметите, что у нас есть один класс фабрики, который возвращает различные подклассы на основе предоставленных входных данных, и класс фабрики использует операторы if-else или switch для достижения этой цели.

В шаблоне абстрактной фабрики мы избавляемся от блока if-else и имеем класс фабрики для каждого подкласса, а затем абстрактный класс фабрики, который вернет подкласс на основе входного класса фабрики. Проверьте Абстрактный фабричный шаблон , чтобы узнать, как реализовать этот шаблон с помощью примера программы.

4. Шаблон Конструктора

Этот шаблон был введен для решения некоторых проблем с фабричными и абстрактными шаблонами проектирования фабрик, когда объект содержит много атрибутов. Шаблон компоновщика решает проблему с большим количеством необязательных параметров и несогласованным состоянием, предоставляя способ пошагового построения объекта и предоставляя метод, который фактически вернет конечный объект. Проверьте Шаблон конструктора для примера программы и классов, используемых в JDK.<

5. Образец Прототипа

Шаблон прототипа используется, когда создание объекта является дорогостоящим делом и требует много времени и ресурсов, а у вас уже есть аналогичный объект. Таким образом, этот шаблон обеспечивает механизм копирования исходного объекта в новый объект, а затем его изменения в соответствии с нашими потребностями. Этот шаблон использует клонирование java для копирования объекта.

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

Структурные Шаблоны Проектирования

Структурные шаблоны предоставляют различные способы создания структуры класса, например, с помощью наследования и композиции для создания большого объекта из маленьких объектов.

1. Шаблон Адаптера

Шаблон проектирования адаптера является одним из шаблонов структурного проектирования и используется для совместной работы двух несвязанных интерфейсов. Объект, который соединяет эти несвязанные интерфейсы, называется адаптером. В качестве примера из реальной жизни мы можем рассматривать мобильное зарядное устройство в качестве адаптера, потому что для зарядки мобильного аккумулятора требуется 3 вольта, но обычная розетка выдает либо 120 В (США), либо 240 В (Индия). Таким образом, мобильное зарядное устройство работает как адаптер между разъемом для зарядки мобильного устройства и настенной розеткой. Проверьте Шаблон адаптера для примера программы и ее использование в Java.

2. Композитный Узор

Составной шаблон является одним из шаблонов структурного проектирования и используется, когда нам нужно представить иерархию “часть-целое”. Когда нам нужно создать структуру таким образом, чтобы объекты в структуре обрабатывались одинаково, мы можем применить шаблон составного проектирования.

Давайте разберемся в этом на примере реальной жизни-диаграмма – это структура, состоящая из таких объектов, как Круг, Линии, Треугольник и т. Д., И когда мы заполняем рисунок цветом (скажем, красным), тот же цвет также применяется к объектам на чертеже. Здесь рисунок состоит из разных частей, и все они выполняют одни и те же операции. Проверьте Составной шаблон статью для различных компонентов составного шаблона и примера программы.

3. Шаблон Прокси-сервера

Цель шаблона прокси-сервера состоит в том, чтобы “Предоставить суррогат или заполнитель для другого объекта для управления доступом к нему”. Само определение очень четкое, и шаблон прокси используется, когда мы хотим обеспечить контролируемый доступ к функциональности.

Допустим, у нас есть класс, который может выполнять некоторые команды в системе. Теперь, если мы его используем, это нормально, но если мы хотим передать эту программу клиентскому приложению, у нее могут возникнуть серьезные проблемы, потому что клиентская программа может выдать команду на удаление некоторых системных файлов или изменение некоторых настроек, которые вам не нужны. Проверьте Шаблон прокси сообщение для примера программы с подробностями реализации.

4. Модель Веса Мухи

Шаблон дизайна flyweight используется, когда нам нужно создать много объектов одного класса. Поскольку каждый объект потребляет пространство памяти, которое может иметь решающее значение для устройств с низким объемом памяти, таких как мобильные устройства или встроенные системы, шаблон проектирования с избыточным весом может быть применен для снижения нагрузки на память за счет совместного использования объектов. Реализация пула строк в java является одним из лучших примеров реализации шаблона Flyweight. Проверьте Шаблон веса статью для примера программы и процесса реализации.

5. Рисунок Фасада

Шаблон фасада используется для облегчения взаимодействия клиентских приложений с системой. Предположим, у нас есть приложение с набором интерфейсов для использования базы данных MySQL/Oracle и создания различных типов отчетов, таких как отчет HTML, отчет PDF и т.д. Таким образом, у нас будет другой набор интерфейсов для работы с различными типами баз данных. Теперь клиентское приложение может использовать эти интерфейсы для получения необходимого подключения к базе данных и создания отчетов. Но когда сложность возрастает или имена поведения интерфейса сбивают с толку, клиентскому приложению будет трудно управлять им. Таким образом, мы можем применить здесь шаблон фасада и предоставить интерфейс оболочки поверх существующего интерфейса, чтобы помочь клиентскому приложению. Проверьте Шаблон фасада сообщение для деталей реализации и примера программы.

6. Узор Моста

Когда у нас есть иерархии интерфейсов в обоих интерфейсах, а также реализации, тогда шаблон проектирования моста используется для отделения интерфейсов от реализации и сокрытия деталей реализации от клиентских программ. Как и шаблон адаптера, это один из шаблонов структурного проектирования.

Реализация шаблона проектирования моста следует принципу предпочтения композиции наследованию. Ознакомьтесь с сообщением о шаблоне моста для получения подробной информации о реализации и примера программы.

7. Рисунок Декоратора

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

Мы используем наследование или композицию для расширения поведения объекта, но это делается во время компиляции и применимо ко всем экземплярам класса. Мы не можем добавить какие – либо новые функции, чтобы удалить любое существующее поведение во время выполнения-это когда на сцену выходит шаблон декоратора. Ознакомьтесь с публикацией шаблона декоратора для получения примера программы и подробностей реализации.

Поведенческие Шаблоны Проектирования

Поведенческие паттерны обеспечивают решение для лучшего взаимодействия между объектами и способы обеспечения свободной связи и гибкости для легкого расширения.

1. Шаблон Метода Шаблона

Метод шаблона-это шаблон поведенческого проектирования, который используется для создания заглушки метода и переноса некоторых этапов реализации на подклассы. Метод шаблона определяет шаги для выполнения алгоритма и может предоставить реализацию по умолчанию, которая может быть общей для всех или некоторых подклассов.

Предположим, мы хотим предоставить алгоритм для строительства дома. Шаги, которые необходимо выполнить, чтобы построить дом, – это строительство фундамента, строительство столбов, строительство стен и окон. Важным моментом является то, что мы не можем изменить порядок выполнения, потому что мы не можем создавать окна до создания фундамента. Итак, в этом случае мы можем создать шаблонный метод, который будет использовать различные методы для строительства дома. Проверьте Шаблон метода шаблона сообщение для получения подробной информации о реализации с примером программы.

2. Шаблон Посредника

Шаблон проектирования посредника используется для обеспечения централизованной среды связи между различными объектами в системе. Шаблон проектирования посредника очень полезен в корпоративном приложении, где несколько объектов взаимодействуют друг с другом. Если объекты взаимодействуют друг с другом напрямую, компоненты системы тесно связаны друг с другом, что повышает стоимость обслуживания и не позволяет легко расширяться. Шаблон посредника фокусируется на том, чтобы обеспечить посредника между объектами для связи и помочь в реализации потери связи между объектами.

Диспетчер воздушного движения является отличным примером посреднической схемы, когда диспетчерская аэропорта работает в качестве посредника для связи между различными рейсами. Посредник работает как маршрутизатор между объектами и может иметь свою собственную логику для обеспечения способа связи. Проверьте Шаблон посредника сообщение для получения подробной информации о реализации с примером программы.

3. Схема цепочки ответственности

Шаблон цепочки ответственности используется для достижения слабой связи при разработке программного обеспечения, когда запрос от клиента передается цепочке объектов для их обработки. Затем объект в цепочке решит, кто будет обрабатывать запрос и требуется ли отправлять запрос следующему объекту в цепочке или нет.

Мы знаем, что в коде блока try-catch может быть несколько блоков catch. Здесь каждый блок catch является своего рода процессором для обработки этого конкретного исключения. Поэтому, когда в блоке try возникает исключение, оно отправляется для обработки в первый блок catch. Если блок catch не может его обработать, он перенаправляет запрос следующему объекту в цепочке, т. е. следующему блоку catch. Если даже последний блок catch не может его обработать, исключение выбрасывается за пределы цепочки вызывающей программе.

Логика банкомата для выдачи банкоматов может быть реализована с использованием шаблона Цепочки ответственности , ознакомьтесь с сообщением по ссылке.

4. Модель Наблюдателя

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

Java предоставляет встроенную платформу для реализации шаблона наблюдателя с помощью java.util.Наблюдаемый класс и java.util.Интерфейс наблюдателя. Однако он широко не используется, потому что реализация действительно проста, и в большинстве случаев мы не хотим в конечном итоге расширять класс только для реализации шаблона наблюдателя, поскольку java не обеспечивает множественного наследования в классах.

Служба сообщений Java (JMS) использует шаблон наблюдателя вместе с шаблоном посредника, чтобы приложения могли подписываться и публиковать данные для других приложений. Проверьте Шаблон наблюдателя сообщение для получения подробной информации о реализации и примера программы.

5. Модель Стратегии

Шаблон стратегии используется, когда у нас есть несколько алгоритмов для конкретной задачи, и клиент решает, какая фактическая реализация будет использоваться во время выполнения.

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

Проверьте Шаблон стратегии сообщение для получения подробной информации о реализации и примера программы.

6. Шаблон Команды

Шаблон команды используется для реализации слабой связи в модели запрос-ответ. В шаблоне команды запрос отправляется вызывающему и вызывающий передает его инкапсулированному команде объекту. Объект команды передает запрос соответствующему методу Получателя для выполнения определенного действия.

Допустим, мы хотим предоставить утилиту файловой системы с методами открытия, записи и закрытия файла, и она должна поддерживать несколько операционных систем, таких как Windows и Unix.

Чтобы реализовать нашу утилиту файловой системы, прежде всего, нам нужно создать классы-приемники, которые фактически будут выполнять всю работу. Поскольку мы кодируем в терминах интерфейсов Java, у нас может быть интерфейс приемника файловой системы и классы его реализации для различных типов операционных систем, таких как Windows, Unix, Solaris и т.д. Проверьте Шаблон команды сообщение для получения подробной информации о реализации с примером программы.

7. Модель Состояния

Шаблон проектирования состояния используется, когда объект изменяет свое поведение в зависимости от своего внутреннего состояния.

Если нам нужно изменить поведение объекта в зависимости от его состояния, мы можем иметь переменную состояния в объекте и использовать блок условий if-else для выполнения различных действий в зависимости от состояния. Шаблон состояния используется для обеспечения систематического и слабо связанного способа достижения этой цели с помощью реализации контекста и состояния.

Проверьте Шаблон состояния сообщение для получения подробной информации о реализации с примером программы.

8. Схема посещения

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

Например, подумайте о корзине покупок, в которую мы можем добавить товары (элементы) другого типа, когда мы нажимаем кнопку “Оформить заказ”, она вычисляет общую сумму, подлежащую оплате. Теперь мы можем использовать логику вычисления в классах элементов или перенести эту логику в другой класс, используя шаблон посетителя. Давайте реализуем это в нашем примере шаблона посетителя. Проверьте Шаблон посетителя сообщение для получения подробной информации о реализации.

9. Шаблон Интерпретатора

используется для определения грамматического представления языка и предоставляет интерпретатора для работы с этой грамматикой.

Лучшим примером этого шаблона является компилятор java, который интерпретирует исходный код java в байт-код, понятный JVM. Переводчик Google также является примером шаблона интерпретатора, в котором ввод может быть на любом языке, а вывод может быть интерпретирован на другом языке.

Проверьте Шаблон интерпретатора сообщение для примера программы.

10. Шаблон Итератора

Шаблон итератора в одном из поведенческих шаблонов, и он используется для обеспечения стандартного способа обхода группы объектов. Шаблон итератора широко используется в Java Collection Framework, где интерфейс итератора предоставляет методы для обхода коллекции.

Шаблон итератора-это не только прохождение по коллекции, но мы также можем предоставить различные типы итераторов в зависимости от наших требований. Шаблон итератора скрывает фактическую реализацию обхода через коллекцию, и клиентские программы просто используют методы итератора. Проверьте Шаблон итератора публикацию для примера программы и деталей реализации.

11. Шаблон на Память

Шаблон дизайна памятки используется, когда мы хотим сохранить состояние объекта, чтобы мы могли восстановить его позже. Шаблон Memento используется для реализации этого таким образом, чтобы сохраненные данные о состоянии объекта были недоступны за пределами объекта, это защищает целостность сохраненных данных о состоянии.

Шаблон Memento реализован с двумя объектами – Создателем и Хранителем. Создателем является объект, состояние которого необходимо сохранить и восстановить, и он использует внутренний класс для сохранения состояния объекта. Внутренний класс называется Memento и является закрытым, поэтому к нему нельзя получить доступ из других объектов.

Проверьте Шаблон памятки для получения примера программы и деталей реализации.

Различные Шаблоны Проектирования

Существует множество шаблонов проектирования, которые не подпадают под шаблоны проектирования GoF. Давайте рассмотрим некоторые из этих популярных шаблонов дизайна.

1. Шаблон дизайна DAO

Шаблон проектирования DAO используется для разделения логики сохранения данных на отдельный уровень. DAO-очень популярный шаблон, когда мы разрабатываем системы для работы с базами данных. Идея состоит в том, чтобы отделить уровень обслуживания от уровня доступа к данным. Таким образом, мы реализуем разделение логики в нашем приложении.

Ознакомьтесь с шаблоном DAO для получения полной информации и примера программы.

2. Шаблон Внедрения Зависимостей

Внедрение зависимостей позволяет нам удалить жестко запрограммированные зависимости и сделать наше приложение слабо связанным, расширяемым и ремонтопригодным. Мы можем реализовать внедрение зависимостей в java, чтобы перенести разрешение зависимостей из времени компиляции во время выполнения. Каркас Spring построен по принципу внедрения зависимостей.

Прочитайте больше о шаблоне внедрения зависимостей, чтобы понять, как его реализовать в нашем Java-приложении.

3. Шаблон MVC

Шаблон MVC – один из старейших архитектурных шаблонов для создания веб-приложений. MVC расшифровывается как Model-View-Контроллер.

Ознакомьтесь с шаблоном MVC для получения более подробной информации и полного примера кода.

Это все для разных шаблонов проектирования в Java. Цель этого поста состоит в том, чтобы предоставить индекс, позволяющий легко просматривать их все.