Sobes.tech
Back to questions
Junior — Middle
140

Можете объяснить концепцию шаблона проектирования Builder и в чем его преимущество?

Companies where asked
AndersenAndersen

Answer from AI

sobes.tech AI

Шаблон проектирования Builder используется для поэтапного создания сложных объектов. Он отделяет процесс конструирования объекта от его представления, позволяя создавать разные варианты объекта, используя один и тот же процесс.

Преимущества:

  • Позволяет создавать объекты с множеством параметров, избегая конструктора с большим числом аргументов.
  • Улучшает читаемость и поддержку кода.
  • Позволяет создавать разные представления объекта, используя один и тот же код построения.

Пример на Dart (Flutter):

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();
}