Строитель - позволяет создавать сложные объекты пошагово. Он отделяет конструирование сложного объекта от его представления, так что в результате одного и того же процесса конструирования могут получиться разные представления.

Стоит использовать когда объект должен создаваться пошагово, и эти шаги могут быть разными для разных вариантов объекта, когда нужно создавать разные представления одного сложного объекта или когда процесс конструирования может быть независим от его частей.

Используется в ORM (SQLAlchemy, Django ORM), библиотека для работы с документами, API клиентах и конфигурации системы.

Позволяет изменять внутреннее представление продукта, изолирует код сборки продукта от его бизнес-логики и даёт более тонкий контроль над процессом конструирования, но усложняет код из-за введения дополнительных классов и требует создания отдельного конкретного строителя для каждого типа продукта.

В отличе от Абстрактной фабрики, Строитель концентрируется на пошаговом создании одного объекта, в то время как фабрика создает семейства связанных объектов.

Небольшой пример: `class Car: def init(self): self.model = None self.engine = None self.color = None

def str(self): return f"{self.color} {self.model} с {self.engine} двигателем"

class CarBuilder: def init(self): self.car = Car()

def set_model(self, model): self.car.model = model return self

def set_engine(self, engine): self.car.engine = engine return self

def set_color(self, color): self.car.color = color return self

def build(self): return self.car

#Использование

car = (CarBuilder() .set_model("Tesla Model S") .set_engine("электрическим") .set_color("красный") .build()) print(car)

#weekofpatterns`
repost

36

input message

напишите коммент

еще контент в этом сообществе

еще контент в этом соообществе

войдите, чтобы увидеть

и подписаться на интересных профи

в приложении больше возможностей

пока в веб-версии есть не всё — мы вовсю работаем над ней

сетка — cоциальная сеть для нетворкинга от hh.ru

пересекайтесь с теми, кто повлияет на ваш профессиональный путь