Direi di no. Non sono sicuro di quale lingua sia, ma prima di tutto, alcuni (più?) Metodi su una classe dovrebbero essere privati. Sono dettagli di implementazione e non dovrebbero essere esposti affatto.
Quindi, se assumiamo che si tratta solo di metodi pubblici, continuo a sostenere che la risposta è: no. Il punto di un'interfaccia è definire i metodi che devono essere utilizzati in contesti in cui la classe di implementazione non è nota e non ha importanza. Mentre sarebbe possibile creare interfacce 'filler' che specificano metodi specifici di implementazione, questo è semplicemente cruft a meno che non ci sia un codice che faccia riferimento a quell'interfaccia in modo agnostico di implementazione. Questo sicuramente si tradurrà in qualcosa che si approssima ad avere un'interfaccia per classe che è qualcosa che considero rumore.
Ad esempio, supponiamo di aver definito un'interfaccia di dizionario semplice e di sola lettura da utilizzare in un algoritmo:
interface ReadOnlyDict<E> {
E get(Object key);
}
Il mio algoritmo non si preoccupa di come si implementa quel metodo. Forse è un Map
. Forse usi un'istruzione switch per chiamare metodi diversi su un oggetto. Forse legge da un file, forse chiama dal servizio web remoto. In ognuno di questi casi, potrebbero esserci molte cose che il codice che crea quegli oggetti deve essere in grado di chiamare per prepararlo per l'uso. Forse quei metodi sono definiti da altre interfacce e questo è grandioso. Ma se non lo sono, creare un'interfaccia semplicemente in modo da essere definiti su uno è un esercizio inutile, secondo me.