L'ereditarietà monofattoriale (o un-fattoriale) è un tipo di ereditarietà in cui ciascun membro di una classe eredita solo una classe genitore. Ciò significa che ogni istanza di una classe ha un solo database, che contiene tutte le sue proprietà e metodi.
L’ereditarietà monofattoriale presenta vantaggi e svantaggi. Da un lato, ciò semplifica il codice e lo rende più comprensibile, poiché ogni metodo o proprietà ha un solo genitore. Evita inoltre conflitti di denominazione poiché tutti i membri della classe hanno nomi univoci.
Tuttavia, l’ereditarietà monofattoriale presenta anche alcune limitazioni. Ad esempio, se una classe eredita da diverse classi madri, può avere solo le proprietà e i metodi definiti in ciascuna delle classi madri. Ciò può far sì che la classe contenga proprietà e metodi ridondanti, rendendone difficile l'utilizzo.
Inoltre, l’ereditarietà monofattoriale può essere inefficace se le classi madri hanno molte proprietà e metodi in comune. In questo caso, ogni istanza della classe conterrà molti dati duplicati, il che può portare ad un aumento delle dimensioni del database e al rallentamento del programma.
In generale, l'ereditarietà monofattoriale è una buona scelta per le classi semplici che non dispongono di molte proprietà e metodi e che non richiedono la condivisione dei dati tra le classi madri. Tuttavia, se le classi hanno una struttura complessa e condividono dati, potrebbe essere più efficiente utilizzare l'ereditarietà multifattoriale o di composizione.