Junior
Aký je rozdiel medzi návrhovým vzorcom Builder a bežným konštruktorom?
sobes.tech AI
Odpoveď od AI
Výhoda je nasledovná:
- Čitateľnosť a zrozumiteľnosť kódu: Pri veľkom počte parametrov sa konštruktor stáva objemným a ťažko čitateľným. Builder umožňuje priraďovať hodnoty parametrom podľa ich názvov, čím je kód prehľadnejší.
// Bez Buildera
ComplexObject obj = new ComplexObject(value1, value2, null, true, null, value6);
// S Builderom
ComplexObject obj = new ComplexObject.Builder()
.setValue1(value1)
.setValue2(value2)
.setFlag(true)
.setValue6(value6)
.build();
- Podpora voliteľných parametrov: Nie všetky parametre sú vždy potrebné. Builder uľahčuje vytváranie objektov s rôznymi kombináciami voliteľných parametrov, čím sa vyhýba veľkému počtu preťažených konštruktorov.
- Nemennosť (voliteľná): Builder sa často používa na vytváranie nemenných objektov, čo zvyšuje bezpečnosť a zjednodušuje viacvláknové programovanie. Objekt je úplne nakonfigurovaný v jednom kroku.
- Kontrola poradia nastavovania parametrov: Hoci to nie je zrejmé, Builder môže kontrolovať poradie, v ktorom sú parametre nastavované, ak je to potrebné (napríklad pre závislé parametre).
- Zlepšenie testovateľnosti: Metódy setter v Builderi sú jednoduchšie na testovanie v porovnaní s veľkým konštruktorom.