Читаоци попут вас помажу у подршци МУО. Када обавите куповину користећи везе на нашем сајту, можда ћемо зарадити провизију за партнере. Опширније.

Буилдер образац дизајна обухвата својства објекта и омогућава вам да конструишете његову репрезентацију. Овај образац вам омогућава да конструишете сложене објекте, са различитим својствима иако припадају истој класи.

Типична класа објеката садржи атрибуте, конструкторе и методе. Образац градитеља вам омогућава да извучете логику конструкције из класе објеката и поставите је у класе које се називају градитељи. Затим можете користити ове класе градитеља да креирате различите варијације истог објекта.

Имплементација Буилдер Паттерна у Јави

Добар пример шаблона за израду је систем наручивања пице који омогућава купцима да изаберу различите опције прелива.

Класа производа

Један приступ је да се направи интерфејс, али прво ћете морати да креирате класу производа. Производ у овом узорку апликације је пица.

јавностикласапица{
// својства
приватниинт редни број;
instagram viewer

приватни Низ тесто за пицу;
приватни Низ прелив;

// геттери и сеттери
јавностиинтгетОрдерНумбер(){
повратак редни број;
}

јавностипразнинасетОрдерНумбер(инт редни број){
ово.ордерНумбер = ОрдерНумбер;
}

јавности Низ гетПиззаДоугх(){
повратак тесто за пицу;
}

јавностипразнинасетПиззаДоугх(Тесто за пиззу на жицама){
ово.пиззаДоугх = пиззаДоугх;
}

јавности Низ гетТоппинг(){
повратак прелив;
}

јавностипразнинасетТоппинг(прелив жица){
ово.топпинг = прелив;
}
}

Тхе Буилдер Цласс

Пица Јава класа има три својства и њихове одговарајуће геттере и сетере, али их нема конструкторске методе. Интерфејс за градитељ ће вам омогућити да креирате сваки аспект пиззе објекта посебно. Тада ће вам омогућити да преузмете цео објекат пице.

јавностиинтерфејсБуилдер{
јавностипразнинацреатеПиззаДоугх();
јавностипразнинацреатеТоппинг();
јавности пица гетПизза();
}

Апликација за узорке пице омогућава купцима да наруче било које преливе, као што су сир, феферони, лук или различите комбинације. Дакле, једна пица коју ће купац наручити је сир.

јавностикласаЦхеесеПиззаБуилдеримплементираБуилдер{
приватни Пизза пизза;

јавностиЦхеесеПиззаБуилдер(){
ово.пица = Нова Пица();
}

@Прегазити
јавностипразнинацреатеПиззаДоугх(){
ово.пизза.сетПиззаДоугх("Тесто");
}

@Прегазити
јавностипразнинацреатеТоппинг(){
ово.пизза.сетТоппинг("сир");
}

@Прегазити
јавности пица гетПизза(){
повратаково.пица;
}
}

Класа ЦхеесеПиззаБуилдер имплементира интерфејс Буилдер-а и користи га за креирање нове пице са сиром. Ово је један приказ објекта Пизза. Такође то ради на начин који је независан од класе пице.

Класа ЦхеесеПиззаБуилдер не зна много о класи Пизза, она само зна шта треба да зна да би завршила своју функцију. Она зна да класа Пизза има својство теста и прелива, и поставља ове особине на две специфичне вредности које ће имати свака пица са сиром. Сада сваки пут када апликација позове класу ЦхеесеПиззаБуилдер, креираће нову пицу која има прелив од сира.

Тхе Дирецтор Цласс

Режисерска класа је кључни аспект обрасца градитеља. Једина сврха класе градитеља бетона је стварање одређеног објекта. То постиже стварањем различитих делова објекта одвојено.

Међутим, класе градитеља бетона не знају за алгоритам. Ниједна од класа градитеља не зна да прави тесто пре додавања прелива. Ово је функција класе директора.

јавностикласадиректор{
приватни Буилдер пиззаБуилдер;

јавностидиректор(Буилдер пиззаБуилдер){
ово.пиззаБуилдер = пиззаБуилдер;
}

јавности пица гетПизза(){
повратаково.пиззаБуилдер.гетПизза();
}

јавностипразнинамакеПизза(){
ово.пиззаБуилдер.цреатеПиззаДоугх();
ово.пиззаБуилдер.цреатеТоппинг();
}
}

Час Дирецтор користи интерфејс за прављење пица. То је чувар алгоритма.

Предности коришћења шаблона за дизајн градитеља

Главна предност коришћења шаблона за дизајн градитеља је његова инкапсулација. Ово је кључни аспект софтверског инжењеринга, јер помаже у развоју сигурних апликација.

Још једна предност овог дизајна је његов приступ конструкцији објекта. Омогућава вам да креирате процесе у више корака, где је сваки корак независан, што олакшава отклањање грешака.