Паттерн Builder на Python

Поділитися
Вставка
  • Опубліковано 26 гру 2024

КОМЕНТАРІ • 10

  • @maz5718
    @maz5718 Рік тому

    Спасибо за видео! Подскажи, где можно прочитать про то как понимать структурные схемы которые у тебя нарисованы. Начинаю гуглить структурные схемы там такое ощущение выдаются функциональные, точно не как у тебя.

    • @_MADTeacher
      @_MADTeacher  Рік тому

      Гуглите UML (Unified Modeling Language) =)

  • @dmytrokovalov2199
    @dmytrokovalov2199 10 місяців тому

    Больше похоже на вариацию абстрактной фабрики.
    Для чего создавать класс под каждый рецепт пиццы в котором мы просто хардкодим значения?
    А если клиент закажет без какого-то ингредиента? Мы не сможем использовать конкретный рецепт. Или попросит позажарестие.
    Думаю, что можно упростить и сделать гибче.
    class PizzaBuilder:
    def __init__(self, name):
    self.pizza = Pizza(name)
    def prepare_dough(self, dough_depth, dough_type):
    self.pizza.dough = PizzaBase(dough_depth, dough_type)
    return self
    def add_sauce(self, sauce_type):
    self.pizza.sauce = sauce_type
    return self
    def add_topping(self, *topping_types):
    self.pizza.toppings.extend(topping_types)
    return self
    def set_cooking_time(self, cooking_time):
    self.pizza.cooking_time = cooking_time
    return self
    def build(self):
    return self.pizza
    margarita_pizza = PizzaBuilder('Margarita') \
    .prepare_dough(PizzaDoughDepth.THIN, PizzaDoughType.CORN) \
    .add_sauce(PizzaSauceType.TOMATO) \
    .add_topping(PizzaToppingType.BACON, PizzaToppingType.CHILI) \
    .set_cooking_time(15) \
    .build()

  • @silverus_morgan
    @silverus_morgan 2 роки тому

    Скинь свой код пожалуйста

    • @_MADTeacher
      @_MADTeacher  2 роки тому +1

      Так в описании видео ссылка на репозиторий с кодом)

    • @silverus_morgan
      @silverus_morgan 2 роки тому

      @@_MADTeacher хера я слепой, спасибо

  • @АнтонБорисов-ь2о
    @АнтонБорисов-ь2о 2 роки тому

    Все равно не очень понятно чем куча методов строителя лучше чем передача параметров в конструктор. Нужно знать все методы и их правильную последовательность в клиентском коде а если какие-то методы не обязательны то тут мы напоремся на нарушение SOLID в части разделения интерфейса.

    • @_MADTeacher
      @_MADTeacher  2 роки тому

      Так на этот случай и существует реализация с классом директора, на которого и возлагается обязанность нужным образом инициализировать создаваемый экземпляр класса через строителя)

    • @АнтонБорисов-ь2о
      @АнтонБорисов-ь2о 2 роки тому

      @@_MADTeacher Спасибо за ответ.

  • @КириллЧе-я5ы
    @КириллЧе-я5ы 11 місяців тому

    Если у вас в конструкторе дофига параметров, время призадуматься, мб не Божественная ли у вас сущность🥴 имхо…