Iniziamo col dire che sono costrutti che si adoperano a livelli di sviluppo avanzati, ma neanche troppo. Le interfacce offrono principalmente due grandi vantaggi, strettamente legati tra di loro.
Immaginiamo di avere un grande progetto, decidiamo quindi di dividerci in due o più squadre. Abbiamo bisogno di creare e gestire un gruppo di oggetti, che però non abbiamo idea di come verrà implementato, allora ci mettiamo a tavolino e definiamo i metodi e le proprietà che implementerà, la sua interfaccia. A questo punto delle squadre di occuperanno di implementare delle classi che si basino su quell'interfaccia, altre si occuperanno di creare metodi che accettino come argomento un estensione della stessa interfaccia. Non si puo creare confusione tra i due progetti perche le specifiche di implementazioni sono state definite insieme da tutte le squadre.
Il secondo vantaggio come accennato in precedenza è strettamente legato a questo. Le interfacce permettono a un metodo di accettare una classe ancora piu generale di quella padre, mi spiego meglio, quando definisco un metodo, non serve che sappia gia come o cosa implementerà la classe che verrà passata allo stesso ma solo cosa a grandi linee permetteranno di fare i metodi presenti nell'interfaccia.
A grandi linee è come definire una classe abstract, ma ad un livello ancora piu astratto.
Questa è una spiegazioni puramente logistica, se ti interessa qualcosa di piu tecnico chiedi pure!
|