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

Существует 4 типа шаблонов креативного проектирования, которые мы обсудим:

  1. Шаблон проектирования Singleton
  2. Шаблон проектирования Factory Method
  3. Шаблон проектирования "Абстрактная фабрика"
  4. Шаблон проектирования Builder

Одноэлементный шаблон проектирования

Основное внимание в Singleton Design Pattern уделяется тому, чтобы в системе был только один инициализированный экземпляр объекта. Кроме того, он обеспечивает глобальный доступ к объекту, поэтому во всей виртуальной машине Java используется только один экземпляр.

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

Это обычное использование класса Singleton, поскольку он является потокобезопасным, обеспечивает отложенную инициализацию и не требует синхронизации.

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

Шаблон проектирования фабричного метода

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

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

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

Абстрактная фабричная конструкция

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

В приведенном выше коде с помощью интерфейса «AbstractFactory‹T›» и класса «FactoryProvider» реализован шаблон проектирования абстрактной фабрики.

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

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

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

В приведенном выше коде Шаблон проектирования Builder реализован с помощью внутреннего класса AccountBuilder класса Account. Каждый метод установки внутреннего класса построителя возвращает сам объект построителя, чтобы позволить клиенту продолжить процесс сборки, и как только клиент завершит процесс создания, процесс создания будет завершен с помощью метода «build ()», который возвращает объект «Учетная запись». со всеми предоставленными свойствами.

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

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

Это было все о Creational Design Patterns с примерами кода на Java. Надеюсь, тебе понравится!