Factory Method in Python
Il Factory Method, nella programmazione a oggetti, ci permette di creare oggetti senza specificare la classe.
Attraverso una interfeccia viene creato un oggetto, lasciando alle sottoclassi la decisione di quale oggetto istanziare.
Oggi ne vediamo un esempio in Python; per semplicità ho messo tutto nello stesso file.
Tanto stiamo facendo solo dei test:
import abc
class Figura(metaclass=abc.ABCMeta):
@abc.abstractmethod
def calcola_area(self):
pass
@abc.abstractmethod
def calcola_perimetro(self):
pass
class Rettangolo(Figura):
def __init__(self, height, width):
self.height = height
self.width = width
def calcola_area(self):
return self.height * self.width
def calcola_perimetro(self):
return 2 * (self.height + self.width)
class Quadrato(Figura):
def __init__(self, width):
self.width = width
def calcola_area(self):
return self.width ** 2
def calcola_perimetro(self):
return 4 * self.width
class FiguraFactory:
def crea_figura(self, name):
if name == 'rettangolo':
height = input("Altezza del rettangolo: ")
width = input("Larghezza del rettangolo: ")
return Rettangolo(int(height), int(width))
elif name == 'quadrato':
width = input("Larghezza del quadrato: ")
return Quadrato(int(width))
ff = FiguraFactory()
figura = ff.crea_figura(input("Nome della figura: "))
print(figura.calcola_area())
La prima classe viene definita come una classe astratta.
La classe FiguraFactory è quella che istanzia l'oggetto corretto a seconda dell'input ricevuto dall'utente.
Il resto vien da se.
Enjoy!
python factory method abstractmethod
Commentami!