Паттерн Строитель (Builder) в Python

Паттерн Строитель (Builder) — паттерн, порождающий объекты. Отделяет конструирование сложного объекта от его представления так, что в результате одного и того же процесса конструирования могут получаться разные представления.
От абстрактной фабрики отличается тем, что делает акцент на пошаговом конструировании объекта. Строитель возвращает объект на последнем шаге, тогда как абстрактная фабрика возвращает объект немедленно. Строитель часто используется для создания паттерна компоновщик.

class Builder:

    def build_body(self):
        raise NotImplementedError

    def build_head(self):
        raise NotImplementedError

    def create_human(self):
        raise NotImplementedError


class Human:

    def __init__(self, head, body):
        self.head = head
        self.body = body

    def walk(self):
        print("Walking")

    def run(self):
        print("Running")


class Body:
    pass


class Head:
    pass


class HumanBuilder(Builder):

    def build_head(self):
        return Head()

    def build_body(self):
        return Body()

    def create_human(self):
        head = self.build_head()
        body = self.build_body()
        return Human(head, body)


builder = HumanBuilder()

human = builder.create_human()
human.walk()
human.run()

После запуска файла получим

Walking
Running

 

Ссылка на основную публикацию