Sobes.tech
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.