Factory Method Design Patterns.

  • Oque Vamos Estudar?

  • Oque é Factory Method.

  • Teoria.

  • Pratica em Python.

  • OQue É Factory Method?

  • Factory Method é um padrão criacional para abstrair as chamadas de criação por exemplo de porduto. em resumo código limpo, modular e escalável. Sem mais demora vamos lá.

  • Teoria:

    Toda vez que pensamos em algo, nós imediatamente pensamos, como esse algo funcionae é mais ou menos por ai que nasce o factory method. Primeiro vamos definir como o produto funciona dentro do código. Depois vamos definir como construir este produto. Por fim temos o produto em mãos e podemos usa-lo para oque desejamos.

    conceitos que vamos de utilizar:

  • interface: define como o produto opera.

  • Product_Concrete: é o produto final, observação podem haver vários tipos de produtos.

  • Fábrica: é abstrata e define métodos de como criar o produto e operar o produto é como a planta da casa.

  • maquina: classes concretas que herdam de fábrica a qui o produto é feito em si. Podemo ligar a construtores de classes mas atenção não é o construtor em si.

Prática em python:

  • vamos ter a seguinte estrutura de código
    src:
    |
    main.py
    |
    |
    -- interface/:
    __init__.py
    interfaceProduto.py
    |
    |
    -- factory/:
    __init__.py
    factory.py

  • agora mãos à obra.
    main.py:

    # aqui vamos chamar tudo é o nosso client.
    from factory import Fabrica, MaquinaTipo1
    from interface import InterfaceProduto, ProdutoConcreto

    def main():
    maquina = MaquinaTipo1()
    produto = ProdutoConcreto()
    maquina.criar_produto(nome="cadeira")
    print(produto.usar_produto())

  • interface/interfaceProduto.py

    from abc import ABC, abstractmethod

    class InterfaceDeProduto(ABC):
    @abstraticmethod
    def usar_produto(self):
    pass
    class ProdutoConcreto(InterfaceDeProduto):
    def usar_produto(self):
    return "você usou o produto"

    factory/fabrica.py

    from abc import ABC, abstractmethod
    from interface import InterfaceDeProduto, ProdutoConcreto
    class Fabrica(ABC):
    @abstractmethod
    def criar_produto(self): #abstrato sem -> Produto:
    pass
    class MaquinaTipo1(Fabrica): # nome em documentação é de construtor
    def criar_produto(self, nome) -> InterfaceDeProduto:
    print("criando porduto!")
    return ProdutoConcreto

Copyright @2025 Gabriel Morais De Carvalho