Padrão de design do Python - padrão do construtor

modo construtor

Modo construtor: Separe o objeto de e para
um objeto complexo , e o mesmo processo de construção pode criar coisas diferentes.构造表示

O padrão construtor é semelhante ao padrão abstrato de engenharia e também é usado para criar objetos complexos

A principal diferença é que o padrão builder se concentra na construção de um objeto complexo passo a passo, enquanto o padrão abstract factory se concentra em várias séries de objetos de produto.

Papel:

Construtor abstrato: define a classe abstrata
Construtor concreto: define a classe construtora concreta
Diretor: classe diretora, que encapsula o processo de construção de produtos
Produto: classe de produto a ser construída

vantagem:

Oculta a estrutura interna, o processo de montagem e a sequência de um produto

Separar o código de construção do código de apresentação permite um controle mais preciso sobre o processo de construção

Implementação do código Python:

from abc import ABCMeta, abstractmethod


class Person(metaclass=ABCMeta):
    """
    产品类
    """

    def __init__(self, age=None, gender=None, height=None, weight=None):
        self.age = age
        self.gender = gender
        self.height = height
        self.weight = weight

    def __str__(self):
        return f"年龄:{
      
      self.age}, 性别:{
      
      self.gender}, 身高:{
      
      self.height}, 体重:{
      
      self.weight}"


class BuilderPerson(metaclass=ABCMeta):
    """
    抽象建造者类
    """

    @abstractmethod
    def build_age(self):
        pass

    @abstractmethod
    def build_gender(self):
        pass

    @abstractmethod
    def build_height(self):
        pass

    @abstractmethod
    def build_weight(self):
        pass


class BuildYoungWomanPerson(BuilderPerson):
    """
    实际的产品类
    """

    def __init__(self):
        self.person = Person()

    def build_age(self):
        self.person.age = "18"

    def build_gender(self):
        self.person.gender = "女"

    def build_height(self):
        self.person.height = "1.7m"

    def build_weight(self):
        self.person.weight = "50kg"


class BuildOldManPerson(BuilderPerson):
    """
    实际的产品类
    """

    def __init__(self):
        self.person = Person()

    def build_age(self):
        self.person.age = "60"

    def build_gender(self):
        self.person.gender = "男"

    def build_height(self):
        self.person.height = "1.8m"

    def build_weight(self):
        self.person.weight = "70g"


class PersonDirector:
    """
    指挥者类,描述产品构建的细节
    """

    def build_person(self, builder: BuilderPerson):
        builder.build_age()
        builder.build_gender()
        builder.build_height()
        builder.build_weight()
        return builder.person


# 高层代码:
# 创建年轻的女人
builder1 = BuildYoungWomanPerson()
hd = PersonDirector()
p = hd.build_person(builder1)
print(p)

# 创建老男人
builder2 = BuildOldManPerson()
hd2 = PersonDirector()
p2 = hd2.build_person(builder2)
print(p2)


# 输出
================================
年龄:18, 性别:, 身高:1.7m, 体重:50kg
年龄:60, 性别:, 身高:1.8m, 体重:70g

Acho que você gosta

Origin blog.csdn.net/weixin_45455015/article/details/127526446
Recomendado
Clasificación