Java паттерны проектирования 3: Builder

preview_player
Показать описание
Cкидки до 22-го января на все курсы всего за 9.99:
Каждый купон расчитан на 10 покупок, спешите!
Новый курс по Photoshop:

HIBERNATE:
JPA:
HTML + CSS:
MAVEN:
GIT:
KOTLIN
SQL:
IDEA
Паттерны Java:
Java EE:
Английский язык:
JAVA:
Apache Spark:
Рекомендации по теме
Комментарии
Автор

в книгах встречал, что имена сеттеров билдера делают без слова set
т.е. в вызов такой получается ...name("mike").age(20)...

Das.Kleine.Krokodil
Автор

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

А на примере автора можно просто создать сеттеры и не страдать чушью, типа "теперь мы можем заполнить свойства объекта в одну строчку"

olegbokerov
Автор

Я не создавал интерфейс PersonBuilder, а менял логику PersonBuilderIMpl только в возвратах метода (собственный объект, т.е. PersonBuilderIMpl).
public PersonBuilderIMpl setAge(int age) {
person.age=age;
return this;
}
т.е. по сути объекта PersonBuilderIMpl с полем peson, который будет каждый раз возвращать сам себя, пока не будет build() метода достаточно... Я не прав?

freeflyfish
Автор

Обязателен ли интерфейс? Или можно просто писать класс PersonBuilder?

alex
Автор

есть вопрос) если я удалю интерфейс и оставлю вспомогательный класс со всеми его методами, изменив только то что методы возвращают( то есть уже сам вспомогательный класс а не интерфейс) все будет работать точно так же. и я все так же смогу использовать не все поля. и создать сколько угодно разный Person. зачем тогда в данном примере интерфейс?

anikroan
Автор

Скажите пожалуйста, можно ли сейчас приобрести Ваши уроки по Spring?

ВладимирКургузов-ев
Автор

Передаю привет аннотации @Builder из ламбока.

borymskyi
Автор

Хороший, важный паттерн! Знакомые конструкции из андроид-разработки

Graf_AMOR
Автор

В Вашем коде можно напрямую обращаться к полям класса Person или cделать сеттеры в классе Person. В чем смысл?

alex_k
Автор

А почему просто в Персоне написать сеттеры и заполнять только нужные поля?? в чем такой подход проигрывает показанному в видео? (А то про шаблон рассказали, а почему его выгоднее использовать не особо понятно)))

МаксимКаторгин-ру
Автор

А если нужно обязательно указывать, например, имя?

zxsvhbu
Автор

Стоит ли использовать builder в случае если нужно проверять параметры при создании экземпляра на согласованность? Например есть класс "Регион". У него есть столица/региональный центр и просто города. По очевидным причинам, региональный центр должен лежать во множестве городов, площадь региона не должна быть меньше суммы площадей населённых пунктов и.т.д. Хотелось бы отлавливать неправильно переданные комбинации параметров, но при этом не делать этого в основном конструкторе. Если возможно, то как это можно сделать?

АзатМингалеев-вк
Автор

А почему не вылетает исключение при выводе неинициализированной переменной? Откуда значение по умолчанию берётся?

vladder
Автор

Что для тебя как разработчику удобнее оказалось, win, *nix или macOS?

zxsvhbu
Автор

А хіба анотація @Builder з lombok, не робить те саме?

МарянаКравець-уд
Автор

эм, уже были же уроки по паттернам, что поменялось?

bogizzla
Автор

А как засетать значения юзеру(в методе у билдера), если нет сетеров у него, я имею ввиду, что поля юзера будут приватными в реальной программе и дав ему сетеры, то это лишает смысла этого паттерна, как быть тогда ?

romanihnatov
Автор

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

Das.Kleine.Krokodil
Автор

а почему методы интерфейса PersonBuilder (кроме метода build) нельзя сделать void ? Почему они должны возвращать PersonBuilder ?

alexfirestarter
Автор

И тебя взяли на работу в Лос-Анджелес? Втф мен!?

egoszina