Sto scrivendo un'app per cui è necessario disporre di una fase di registrazione generica. Deve essere in grado di fare alcune cose specifiche (io uso l'interfaccia per questo) e deve essere un elemento visivo (di Xamarin, non importa, però), diciamo VisualElement (io uso la classe astratta per quello). Ecco come appare:
public interface IRegistrationStep
{
Task<bool> Validate();
void Minimize();
void Maximize();
}
public abstract class RegistrationStep : ContentView, IRegistrationStep
{
public abstract Task<bool> Validate();
public abstract void Minimize();
public abstract void Maximize();
}
Dopo, deduco tutti i miei passi da RegistrationStep
. Se ho bisogno del passo per essere in grado di fare ancora una cosa, semplicemente lo aggiungo all'interfaccia, aggiungo il metodo astratto alla classe astratta e lo implemento nell'implementazione astratta della classe ... O forse no? Come, forse a volte dovrei aggiungere metodi solo alla classe astratta e non all'interfaccia?
La mia domanda è, come posso decidere dove aggiungere nuovi metodi? Ci sono esempi quando è più ragionevole aggiungere metodi alla classe astratta e non all'interfaccia?