Паттерн проектирования: Builder

FacebooktwittertumblrFacebooktwittertumblr

Данная статья:

  • написана командой Vertex Academy.  
  • это одна из статей из нашего "Самоучителя по Java"
  • данная статья рассчитана не тех, кто хорошо знает ООП.

Привет! Это статья о паттерне проектирования Builder (Строитель).

Если Вы не знаете, что такое паттерны проектирования, или хотите освежить знания - прочитайте нашу статью, которая так и называется "Паттерны проектирования".

Что такое паттерн Builder и зачем он нужен

Представим, что нам нужно создать класс с большим количеством параметров - например, класс Person. Какие поля у нас будут? Давайте добавим:

  • имя (name)
  • фамилия (surname)
  • возраст (age)
  • рост (height)
  • вес (weight)
  • родители (parents)

Можно еще много параметров дописывать - но и этого пока хватит. В "реальных" классах полей может быть и намного больше.

Таким образом, получаем такой класс:

А теперь представим, что мы хотим для данного класса задать все возможные варианты конструкторов, которые нам могут понадобиться. Зачем? Чтобы в разных частях кодах использовать разные конструкторы и создавать экземпляры класса Person с разным количеством заполненных полей ( например, у нас в классе 6 полей. А мы хотим заполнить только 3 поля).

Например, это будет выглядеть так:

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

И так нам придется писать разные сочетания параметров? Более того, очень легко будет случайно перепутать параметры местами. Например, если мы напишем Person("Doe", "Jane") вместо Person("Jane", "Doe") - перепутаем местами имя и фамилию? Или, например, возраст и рост? Оба параметра имеют одинаковый тип, и мы можем долго не замечать ошибку.

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

Для этого вернемся к первоначальной версии нашего класса:

Создаем внутри нашего класса еще один класс - Builder:

Многовато? Давайте разберем по частям.

Если бы у нас был такой же Builder, только на один параметр (например, имя), он выглядел бы так:

Если разделить на части будет так:

Далее вызываем Builder - пишем main():

Готово! Теперь мы построили наш первый объект с помощью паттерна Builder.

Согласитесь - теперь благодаря паттерну Builder:

  • код выглядит гораздо читабельнее. Ведь все, относящееся к созданию объекта, вынесено в отдельный класс  - Builder;
  • при заполнении полей объекта теперь параметры трудно перепутать;
  •         мы можем заполнять не все параметры класса. Как Вы могли заметить, мы указали все параметры кроме родителей (parents).

Поздравляем, теперь Вы знаете как создать Builder и зачем он используется!


Надеемся, наша статья была Вам полезна. Записаться к нам на курсы по Java можно у нас на сайте.

FacebooktwittertumblrFacebooktwittertumblr

FacebooktwittertumblrFacebooktwittertumblr
Самоучители--узнать детальнее--