Sobes.tech
Junior — Middle

Ar galite paaiškinti Builder dizaino šablono koncepciją ir jo pranašumą?

sobes.tech AI

Atsakymas iš AI

Tarpinio dizaino modelis Builder naudojamas sudėtingų objektų etapiniam kūrimui. Jis atskiria objekto konstravimo procesą nuo jo reprezentacijos, leidžiant naudoti tą patį procesą kuriant skirtingas objekto versijas.

Privalumai:

  • leidžia kurti objektus su daugybe parametrų, išvengiant konstruktorio su daug argumentų.
  • gerina kodo skaitomumą ir priežiūrą.
  • leidžia kurti skirtingas objekto reprezentacijas naudojant tą patį konstravimo kodą.

Dart (Flutter) pavyzdys:

class Pizza {
  final String dough;
  final String sauce;
  final String topping;

  Pizza._builder(PizzaBuilder builder)
      : dough = builder.dough,
        sauce = builder.sauce,
        topping = builder.topping;
}

class PizzaBuilder {
  String dough = '';
  String sauce = '';
  String topping = '';

  PizzaBuilder setDough(String dough) {
    this.dough = dough;
    return this;
  }

  PizzaBuilder setSauce(String sauce) {
    this.sauce = sauce;
    return this;
  }

  PizzaBuilder setTopping(String topping) {
    this.topping = topping;
    return this;
  }

  Pizza build() {
    return Pizza._builder(this);
  }
}

void main() {
  var pizza = PizzaBuilder()
      .setDough('Thin crust')
      .setSauce('Tomato')
      .setTopping('Cheese')
      .build();
}