Проблема
Прежде чем мы углубимся в детали, давайте сначала посмотрим, как этот шаблон облегчает нашу жизнь как разработчиков программного обеспечения:
Это довольно стандартный класс Java. Но, как видите, у нас довольно длинный конструктор. Хотя это не проблема того, как работает код, это немного усложняет использование класса. Давайте посмотрим на пример:
Хотя этот пример прост, вы можете легко увидеть, что порядок наших параметров, определенных в классе Person, трудно запомнить. Было ли это «любимая еда», а затем «любимый цвет» или наоборот?
Во многих библиотеках и API вы обнаружите, что иногда вам нужно создавать действительно сложные объекты с вложенными объектами. Это может привести к большому количеству повторяющегося и ненужного кода. Шаблон построителя может скрыть множество деталей и предоставить вам действительно чистый опыт разработчика.
Шаблон Builder спешит на помощь
Давайте начнем! Чтобы понять шаблон конструктора, вам сначала нужно хорошо понять, как работает ключевое слово «this». В Интернете есть много фантастических статей, которые могут научить вас этой концепции. Кроме того, все, что вам нужно, — это понимание классов Java.
Давайте сначала посмотрим на нашу цель; над чем мы работаем:
Как видите, совершенно ясно, что представляет собой каждое значение, переданное методам. Кроме того, каждый вызов метода является необязательным. Хотите быть анонимным и оставить имя? Ты сможешь! Класс PersonBuilder может даже установить имя по умолчанию в конструкторе.
Теперь, когда вы увидели, над чем мы работаем, вот класс, который позволит нам достичь этого:
В приведенном выше примере предполагается, что в класс Person были внесены некоторые изменения:
- Удалены все параметры из конструктора
- Добавлены сеттеры в класс
Обратите внимание, что эти изменения являются произвольными. Отличительной особенностью этого шаблона является то, что он очень гибок в реализации.
Когда я впервые увидел этот шаблон проектирования, он меня немного смутил, но на самом деле он очень прост. Каждый из наших методов, которые устанавливают данные, просто возвращает один и тот же экземпляр класса, используя ключевое слово this. В результате мы можем связывать столько вызовов методов, сколько захотим.
Метод «done» просто возвращает наш объект Person, который мы создали с помощью наших специальных методов.
Вывод
Вот и все! Вы только что узнали, что такое шаблон компоновщика и как вы можете использовать его в своих проектах программного обеспечения.
Если у вас есть какие-либо вопросы или исправления к этой статье, не стесняйтесь комментировать, и я постараюсь помочь, как только смогу.
Удачного кодирования
— Дилан