2016-05-25 53 views
5

Ho alcune domande generali riguardo l'utilizzo di interfaccia:L'interfaccia Java dovrebbe contenere solo getter?

  1. Quali sono i vantaggi nel creare un'interfaccia per ogni classe di oggetti?
  2. L'interfaccia deve contenere solo i metodi 'getter'?
  3. Perché non anche il setter?
  4. Perché dovrei creare un'interfaccia per ogni classe di oggetti? Mi sarà servito nei test JUnit?

Ad esempio:

public interface Animal { 
     public getVoice(); 
     public String getName(); 
    } 

public class Dog implements Animal { 
    private String name; 

    public getVoice(){ 
     System.out.println("Brrr"); 
    } 
    public String getName(){ 
     return this.name; 
    } 
    public void setName(String name){ 
     this.name = name; 
    } 

} 

Grazie

+0

Sarà eccessivo. –

+0

Stai facendo almeno tre domande qui. Ti dispiacerebbe ridurlo a uno che può essere * brevemente * risposto? – Makoto

+0

I test unitari testano le implementazioni concrete, hanno bisogno di testare "l'interfaccia" (in senso lato) di una classe ma non necessariamente l'interfaccia ': http://stackoverflow.com/questions/10937763/unit-under-test -impl-o-interfaccia – zapl

risposta

10

Quali sono i vantaggi nel creare un'interfaccia per ogni classe di oggetti?

Non c'è alcun vantaggio. Questo non è ciò a cui le interfacce servono.

L'interfaccia deve contenere solo i metodi "getter"? Perché non anche il setter?

Fintanto che è un metodo, le interfacce non si preoccupano del loro comportamento funzionale.

Perché dovrei creare per ogni classe oggetto un'interfaccia?

Ancora, questo non è lo scopo dell'interfaccia. Consideralo come ridondante.

Se si capisce quali sono interfaces, vi renderete conto il loro corretto utilizzo

Implementazione di un interfaccia permette una classe per diventare più formale circa il comportamento che promette di fornire. Le interfacce formano un contratto tra la classe e il mondo esterno e questo contratto viene applicato in fase di compilazione dal compilatore.

3

Le interfacce intendono descrivere i contratti. O per uso interno nell'applicazione, fornendo un'astrazione su diverse implementazioni, o magari per fornirle a entità esterne da implementare.

L'interfaccia può avere una quantità qualsiasi di metodi, il cui scopo è di imporre la loro implementazione nelle classi di implementazione, pertanto il contratto viene mantenuto.

Problemi correlati