Factory Method in Python

Mattepuffo's logo
Factory Method in Python

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!


Condividi

Commentami!