Kaltaisesi lukijat auttavat tukemaan MUO: ta. Kun teet ostoksen käyttämällä sivustollamme olevia linkkejä, voimme ansaita kumppanipalkkion. Lue lisää.

Builder-suunnittelukuvio kiteyttää kohteen ominaisuudet ja antaa sinun rakentaa siitä esityksen. Tämän mallin avulla voit rakentaa monimutkaisia ​​objekteja, joilla on erilaiset ominaisuudet, vaikka ne kuuluvat samaan luokkaan.

Tyypillinen objektiluokka sisältää attribuutteja, konstruktoreita ja menetelmiä. Rakennusmallin avulla voit poimia rakennuslogiikan objektiluokasta ja sijoittaa sen luokkiin, joita kutsutaan rakentajiksi. Voit sitten käyttää näitä builder-luokkia luodaksesi erilaisia ​​muunnelmia samasta objektista.

Builder-mallin käyttöönotto Javassa

Hyvä esimerkki rakentajakuviosta on pizzan tilausjärjestelmä, jonka avulla asiakkaat voivat valita erilaisia ​​täytevaihtoehtoja.

Tuoteluokka

Yksi tapa on tehdä rakentajasta käyttöliittymä, mutta sinun on ensin luotava tuoteluokka. Tämän mallihakemuksen tuote on pizza.

julkinenluokkaaPizza{
instagram viewer

// ominaisuuksia
yksityinenint tilausnumero;
yksityinen merkkijono pizzataikina;
yksityinen merkkijono täyte;

// Getterit ja asettajat
julkinenintgetOrderNumber(){
palata tilausnumero;
}

julkinenmitätönsetOrderNumber(int tilausnumero){
Tämä.orderNumber = tilausNumber;
}

julkinen merkkijono hanki PizzaDough(){
palata pizzataikina;
}

julkinenmitätönsetPizzaDough(String pizzaDough){
Tämä.pizzaDough = pizzaDough;
}

julkinen merkkijono getTopping(){
palata täyte;
}

julkinenmitätönsetTopping(Täytenauha){
Tämä.topping = täyttö;
}
}

Rakentajaluokka

Pitsa Java luokka on kolme ominaisuutta ja niitä vastaavat getterit ja asettajat, mutta niitä ei ole rakentajan menetelmät. Rakentajan käyttöliittymän avulla voit luoda pizzaobjektin jokaisen osan erikseen. Sen avulla voit sitten hakea koko pizzaesineen.

julkinenkäyttöliittymäRakentaja{
julkinenmitätönluo PizzaDough();
julkinenmitätönCreateTopping();
julkinen Pizza hanki Pizza();
}

Näytepizzasovelluksella asiakkaat voivat tilata mitä tahansa täytteitä, kuten juustoa, pepperonia, sipulia tai erilaisia ​​yhdistelmiä. Siksi yksi asiakkaan tilaama pizza on juusto.

julkinenluokkaaJuustoPizzaBuildertoteuttaaRakentaja{
yksityinen Pizza pizza;

julkinenJuustoPizzaBuilder(){
Tämä.pizza = Uusi Pizza();
}

@Ohittaa
julkinenmitätönluo PizzaDough(){
Tämä.pizza.setPizzaDough("Taikina");
}

@Ohittaa
julkinenmitätönCreateTopping(){
Tämä.pizza.setTopping("Juusto");
}

@Ohittaa
julkinen Pizza hanki Pizza(){
palataTämä.pizza;
}
}

CheesePizzaBuilder-luokka toteuttaa Builder-käyttöliittymän ja käyttää sitä uuden juustopizzan luomiseen. Tämä on yksi esitys Pizza-objektista. Se tekee tämän myös Pizza-luokasta riippumattomalla tavalla.

CheesePizzaBuilder-luokka ei tiedä paljon Pizza-luokasta, se tietää vain sen, mitä sen tarvitsee tietää suorittaakseen tehtävänsä. Se tietää, että Pizza-luokassa on taikina- ja päällysteominaisuus, ja se asettaa nämä ominaisuudet kahteen tiettyyn arvoon, jotka jokaisella juustopizzalla on. Nyt joka kerta kun sovellus kutsuu CheesePizzaBuilder-luokkaa, se luo uuden pizzan, jossa on juustoa.

Ohjaajan luokka

Ohjaajaluokka on tärkeä osa rakentajamallia. Betonirakentajaluokan ainoa tarkoitus on luoda tietty kohde. Se saavuttaa tämän luomalla objektin eri osat erikseen.

Rakentajabetoniluokat eivät kuitenkaan ole tietoisia algoritmista. Yksikään rakentajaluokista ei osaa rakentaa taikinaa ennen täytteen lisäämistä. Tämä on ohjaajaluokan tehtävä.

julkinenluokkaaJohtaja{
yksityinen Rakennusmies pizzaRakentaja;

julkinenJohtaja(Builder pizzaBuilder){
Tämä.pizzaBuilder = pizzaBuilder;
}

julkinen Pizza hanki Pizza(){
palataTämä.pizzaBuilder.getPizza();
}

julkinenmitätöntee Pizza(){
Tämä.pizzaBuilder.createPizzaDough();
Tämä.pizzaBuilder.createTopping();
}
}

Director-luokka käyttää pizzojen valmistamiseen rakentajan käyttöliittymää. Se on algoritmin ylläpitäjä.

Builder-suunnittelumallin käytön edut

Suurin etu rakentajan suunnittelukuvion käyttämisessä on sen kapselointiominaisuus. Tämä on keskeinen osa ohjelmistosuunnittelua, koska se auttaa turvallisten sovellusten kehittämisessä.

Toinen tämän suunnittelumallin etu on sen kohteen rakentamistapa. Sen avulla voit luoda monivaiheisia prosesseja, joissa jokainen vaihe on riippumaton, mikä helpottaa virheenkorjausta.