Sobes.tech
Junior — Middle

Em que casos e para que tarefas se aplica o padrão Factory Method?

sobes.tech IA

Resposta da IA

O padrão Factory Method é utilizado para criar objetos sem especificar a classe concreta do objeto a ser criado. Isto é útil quando:

  • É necessário delegar a criação de objetos às subclasses.
  • É preciso garantir flexibilidade e extensibilidade do código.
  • É necessário esconder a lógica de criação de objetos do cliente.

Exemplo em Python:

from abc import ABC, abstractmethod

class Transport(ABC):
    @abstractmethod
    def deliver(self):
        pass

class Truck(Transport):
    def deliver(self):
        print("Entrega com camião")

class Ship(Transport):
    def deliver(self):
        print("Entrega com navio")

class Logistics(ABC):
    @abstractmethod
    def create_transport(self) -> Transport:
        pass

    def plan_delivery(self):
        transport = self.create_transport()
        transport.deliver()

class RoadLogistics(Logistics):
    def create_transport(self) -> Transport:
        return Truck()

class SeaLogistics(Logistics):
    def create_transport(self) -> Transport:
        return Ship()

# Uso
logistics = RoadLogistics()
logistics.plan_delivery()  # Saída: Entrega com camião

Desta forma, Factory Method permite criar objetos de diferentes classes sem alterar o código que os utiliza.