«Нахождение закономерностей — суть мудрости». — Деннис Прагер

Что такое шаблоны проектирования?

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

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

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

Как помогает шаблон проектирования

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

Тип шаблонов проектирования

В книге «Шаблоны проектирования: элементы многоразового объектно-ориентированного программного обеспечения» упоминается 23 шаблона проектирования. автор:The Gang of Four. Шаблоны проектирования различаются от одной системы к другой в зависимости от проблемы. Все эти шаблоны проектирования делятся на три основные категории. и несколько подкатегорий.

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

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

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

Теперь давайте рассмотрим каждый из подшаблонов внутри трех основных паттернов.

1. Творческие шаблоны

Синглтон шаблон

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

Вот Пример реализации шаблона Singleton.

В Singleton важно не передавать параметры для создания объектов.

Шаблон фабричного метода

В паттерне Singleton мы не передавали никаких параметров, и нам известен объект вывода/возврата. Но в фабричном шаблоне проектирования разработчик может передавать параметры и зависеть от параметров, которые используются при создании, возвращаемый объект будет меняться.

В фабричных шаблонах проектирования для создания объектов, обрабатываемых подклассами.

Вот Пример реализации шаблона фабричного метода.

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

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

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

Есть два способа клонирования объекта.

  1. Поверхностное копирование. Все значения объекта копируются в новый объект. и он всегда копирует исходные значения из примитивных переменных, а из непримитивных (объектов) копирует ссылку на объект, из-за этого, если атрибуты исходного объекта изменены, это повлияет на клонированные объекты.
  2. Глубокое копирование. Глубокое копирование создает отдельно выделенные объекты, здесь исходные объекты и скопированные объекты не зависят друг от друга.

Вот Пример реализации шаблона прототипа

Шаблон строителя

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

//Telescopic Constructors
public PremiumUser(String firstName, String lastName){
    this.firstName = firstName;
    this.lastName = lastName;
}
public PremiumUser(String id, String firstName, String lastName){
     this(firstName, lastName);
     this.id = id;
}
public PremiumUser(String id, String firstName, String lastName, boolean isActive){
     this(id, firstName, lastName);
     this.isActive = isActive;
}

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

Вот пример реализации шаблона Builder.

Абстрактный заводской узор

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

Вот пример реализации шаблона абстрактной фабрики.

В следующей статье давайте узнаем о структурных паттернах. И найдите полный репозиторий шаблонов проектирования на Java.



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

использованная литература

Упрощенные шаблоны проектирования - Учебное пособие