Статьи

Шаблоны проектирования для начинающих с примерами Java

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

В этом посте вы узнаете:

  • Что такое шаблоны дизайна
  • Почему мы используем шаблоны дизайна
  • Различные типы шаблонов дизайна
  • Когда мы используем шаблоны дизайна
  • Как вы реализуете различные шаблоны проектирования в Java
  • Реальные примеры шаблонов дизайна.

Что такое шаблоны дизайна?

Мы создавали объектно-ориентированное программное обеспечение уже более 40 лет, начиная с Smalltalk, который был первым объектно-ориентированным языком.

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

Группа из четырех человек, известная как «Банда Четырех» или GoF, предприняла попытку предложить ряд общих проблем и решений для них в данном контексте.

Этот каталог общих проблем и их решений помечен как GOF (Gang of Four) Design Patterns.

Зачем создавать шаблоны?

Преимущества шаблонов дизайна:

  • Предоставить стандартную терминологию, понятную каждому
  • Не повторять одни и те же ошибки снова и снова

Какие типы шаблонов дизайна?

Шаблоны проектирования, о которых мы здесь говорим, с точки зрения объектно-ориентированного мира. Есть в основном три различных типа шаблонов проектирования:

  • Образцы творчества
  • Структурные паттерны
  • Поведенческие образцы

Творения

Образцы творчества имеют дело с созданием объектов.

структурная

Структурные узоры имеют дело с композицией объектов.

Это касается таких вопросов, как:

  • Что содержится в классе?
  • Каковы отношения класса с другими классами? Это наследство или состав?

поведенческий

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

Как объект общается с другим объектом?

Изучение шаблонов креационного дизайна

Мы исследуем следующие шаблоны творческого дизайна:

Образец прототипа

Прототип представляет полностью инициализированный экземпляр для копирования или клонирования.

Давайте возьмем пример:

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

Каждый раз, когда в новую игру в шахматы играют, нам нужно создать начальный макет доски.

Вместо того чтобы каждый раз повторять создание шахматной доски,

  • Мы можем создать объект, который содержит начальную настройку
  • Клонировать от него — каждый раз, когда в игру играют в шахматы

Объект с начальной настройкой шахматной доски является прототипом. И мы используем образец прототипа.

Разве это не просто?

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

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

Образец Строителя

Шаблон Builder отделяет конструкцию объекта от его представления. Что это значит?

Предположим, вы идете на ужин из нескольких блюд в ресторан. У такого ужина было бы много вариантов, таких как закуски, основное блюдо и десерты. Вы, вероятно, выбрали бы два или три из представленных вариантов. Определенный клиент может захотеть поужинать только с первыми двумя вариантами, оставив опцию десертов Тем не менее, другой предпочел бы основное блюдо и десерты, пропуская закуски полностью.

Подобные ситуации могут возникнуть при разработке программного обеспечения. Вам может понадобиться построить объект, используя подмножество доступных опций. Или вам может понадобиться создать объект несколькими способами. Это где модель строителя пригодится.

Чтобы понять это далее, давайте посмотрим на небольшой фрагмент кода.


Джава