Tokie skaitytojai kaip jūs padeda palaikyti MUO. Kai perkate naudodami nuorodas mūsų svetainėje, galime uždirbti filialų komisinius. Skaityti daugiau.

„Builder“ dizaino modelis apima objekto savybes ir leidžia sukurti jo vaizdą. Šis modelis leidžia konstruoti sudėtingus objektus su skirtingomis savybėmis, net jei jie priklauso tai pačiai klasei.

Įprastoje objektų klasėje yra atributų, konstruktorių ir metodų. Statytojo modelis leidžia iš objekto klasės išgauti statybos logiką ir sudėti ją į klases, vadinamas statybininkais. Tada galite naudoti šias kūrėjų klases kurdami skirtingus to paties objekto variantus.

„Builder“ modelio diegimas „Java“.

Puikus statybininko modelio pavyzdys yra picų užsakymo sistema, leidžianti klientams pasirinkti skirtingus užpildymo variantus.

Produkto klasė

Vienas iš būdų yra sukurti kūrėją sąsaja, bet pirmiausia turėsite sukurti produkto klasę. Produktas šiame pavyzdyje yra pica.

viešasklasėpica{
// savybės
privatustarpt užsakymo numeris;
privatus Styga picaTešla;
privatus
instagram viewer
Styga užpilas;

// geteriai ir seteriai
viešastarptgautiOrderNumber(){
grąžinti užsakymo numeris;
}

viešastuštumasetOrderNumber(tarpt užsakymo numeris){
tai.orderNumber = orderNumber;
}

viešas Styga gautiPizzaDough(){
grąžinti picaTešla;
}

viešastuštumarinkinysPizzaDough(Styginė pizzaTešla){
tai.pizzaDough = pizzaTešla;
}

viešas Styga getTopping(){
grąžinti užpilas;
}

viešastuštumasetTopping(Stygų papildymas){
tai.topping = papildymas;
}
}

Statybininkų klasė

Pica Java klasė turi tris ypatybes ir atitinkamus jų geterius ir nustatytojus, tačiau jų nėra konstruktoriaus metodai. Kūrėjo sąsaja leis sukurti kiekvieną picos objekto aspektą atskirai. Tada galėsite paimti visą picos objektą.

viešassąsajaStatybininkas{
viešastuštumasukurtiPizzaDough();
viešastuštumasukurti Topping();
viešas pica gautiPica();
}

Picos pavyzdinė programa leidžia klientams užsisakyti bet kokių priedų, tokių kaip sūris, pepperoni, svogūnai ar įvairūs deriniai. Todėl viena pica, kurią užsisakys klientas, yra sūris.

viešasklasėSūrisPizzaBuilderpadargaiStatybininkas{
privatus Pica pica;

viešasSūrisPizzaBuilder(){
tai.pica = naujas Pica();
}

@Nepaisyti
viešastuštumasukurtiPizzaDough(){
tai.pizza.setPizzaDough("Tešla");
}

@Nepaisyti
viešastuštumasukurti Topping(){
tai.pizza.setTopping("sūris");
}

@Nepaisyti
viešas pica gautiPica(){
grąžintitai.pica;
}
}

CheesePizzaBuilder klasė įgyvendina Builder sąsają ir naudoja ją kuriant naują sūrio picą. Tai vienas picos objekto atvaizdų. Tai taip pat daro nepriklausomai nuo picos klasės.

CheesePizzaBuilder klasė mažai žino apie picų klasę, ji žino tik tai, ką jai reikia žinoti, kad atliktų savo funkciją. Ji žino, kad picos klasė turi tešlos ir užpilimo savybes, ir nustato šias savybes į dvi konkrečias vertes, kurias turės kiekviena sūrio pica. Dabar kiekvieną kartą, kai programa iškviečia CheesePizzaBuilder klasę, ji sukurs naują picą su sūrio užpilu.

Direktorių klasė

Režisieriaus klasė yra esminis statybininko modelio aspektas. Vienintelis betono statybininkų klasės tikslas yra sukurti konkretų objektą. Tai pasiekiama kurdamas skirtingas objekto dalis atskirai.

Tačiau statybininkų betono klasės nežino algoritmo. Nė viena statybininkų klasė nežino, kaip statyti tešlą prieš dedant užpilą. Tai yra režisierių klasės funkcija.

viešasklasėdirektorius{
privatus Builder picaBuilder;

viešasdirektorius(„Builder pizzaBuilder“){
tai.pizzaBuilder = pizzaBuilder;
}

viešas pica gautiPica(){
grąžintitai.pizzaBuilder.getPizza();
}

viešastuštumapadarytiPizza(){
tai.picaBuilder.sukurtiPizzaDough();
tai.picaBuilder.createTopping();
}
}

Direktorių klasėje picoms gaminti naudojama kūrėjo sąsaja. Jis yra algoritmo saugotojas.

„Builder“ dizaino modelio naudojimo pranašumai

Pagrindinis statybininko dizaino modelio naudojimo pranašumas yra jo inkapsuliavimo savybė. Tai yra esminis programinės įrangos inžinerijos aspektas, nes jis padeda kurti saugias programas.

Kitas šio dizaino modelio pranašumas yra objekto konstrukcijos metodas. Tai leidžia kurti kelių etapų procesus, kur kiekvienas veiksmas yra nepriklausomas, o tai palengvina derinimą.