Проблема

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

Это довольно стандартный класс Java. Но, как видите, у нас довольно длинный конструктор. Хотя это не проблема того, как работает код, это немного усложняет использование класса. Давайте посмотрим на пример:

Хотя этот пример прост, вы можете легко увидеть, что порядок наших параметров, определенных в классе Person, трудно запомнить. Было ли это «любимая еда», а затем «любимый цвет» или наоборот?

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

Шаблон Builder спешит на помощь

Давайте начнем! Чтобы понять шаблон конструктора, вам сначала нужно хорошо понять, как работает ключевое слово «this». В Интернете есть много фантастических статей, которые могут научить вас этой концепции. Кроме того, все, что вам нужно, — это понимание классов Java.

Давайте сначала посмотрим на нашу цель; над чем мы работаем:

Как видите, совершенно ясно, что представляет собой каждое значение, переданное методам. Кроме того, каждый вызов метода является необязательным. Хотите быть анонимным и оставить имя? Ты сможешь! Класс PersonBuilder может даже установить имя по умолчанию в конструкторе.

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

В приведенном выше примере предполагается, что в класс Person были внесены некоторые изменения:

  • Удалены все параметры из конструктора
  • Добавлены сеттеры в класс

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

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

Метод «done» просто возвращает наш объект Person, который мы создали с помощью наших специальных методов.

Вывод

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

Если у вас есть какие-либо вопросы или исправления к этой статье, не стесняйтесь комментировать, и я постараюсь помочь, как только смогу.

Удачного кодирования

— Дилан