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?
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