1
resposta

Qual seria a diferença entre Factory e Herança? Quais cenários é mais recomendado optar por um ou outro?

Qual seria a diferença entre Factory e Herança? Quais cenários é mais recomendado optar por um ou outro?

1 resposta

O Factory(Fábrica) method é um padrão de projeto criacional, que resolve o problema de criar objetos de produtos sem especificar suas classes concretas.

Herança é um conceito do paradigma da orientação à objetos que determina que uma classe (filha) pode herdar atributos e métodos de uma outra classe (pai) e, assim, evitar que haja muita repetição de código. Serve para extender o comportamento de uma classe.

Exemplo de Factory:

class Cachorro(object):
    def __init__(self, nome = None):
        self.nome = nome

    def onomatopeia():
        return "Au Au"

class Gato(object):
    def __init__(self, nome = None):
        self.nome = nome

    def onomatopeia():
        return "Miau"

class FabricaAnimal(object):
    @staticmethod
    def cria_animal(animal):
        animal = str(animal).capitalize()
        if (animal == "Gato"):
            return Gato()
        elif (animal == "Cachorro"):
            return Cachorro()
        else:
            return "Ainda não temos esse animal na lista"

if __name__ == "__main__":
    frajola = FabricaAnimal("Gato")
    frajola.onomatopeia() # "Miau"

    spike = FabricaAnimal("Cachorro")
    spike.onomatopeia() #"Au Au"

a Factory(Fábrica) criou qualquer animal da classe que estiver específicado


Exemplo de Herança:

class Animal(object):
    def __init__(self, raça):
            self.raça = raça

class Cachorro(Animal):
    def __init__(self, nome, raça):
        super().__init__(raça)
        self.nome = nome



if __name__ == "__main__":
    dog = Cachorro("Rex", "pitbull")

O comportamento e atributos da classe Cachorro é extendida por conta da classe Animal

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software