2016-05-25 16 views
5

mam pewne ogólne pytania dotyczące użycia interfejsu:Czy interfejs Java powinien zawierać tylko moduły pobierające?

  1. Co to jest korzyści w tworzeniu interfejsu dla każdej klasy obiektów?
  2. Czy interfejs powinien zawierać tylko metody "getter"?
  3. Dlaczego nie także setter?
  4. Dlaczego powinienem utworzyć dla każdej klasy obiektów interfejs? Czy służy mi w testach JUnit?

Na przykład:

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; 
    } 

} 

Dzięki

+0

To będzie przesada. –

+0

Zadajesz tutaj co najmniej trzy pytania. Czy mógłbyś zawęzić go do tego, który można * zwięźle * odpowiedzieć? – Makoto

+0

Jednostki testują implementacje betonów betonowych, muszą przetestować "interfejs" (w szerszym znaczeniu tego słowa) klasy, ale niekoniecznie "interfejs": http://stackoverflow.com/questions/10937763/jednostka-zamek-test -impl-or-interface – zapl

Odpowiedz

10

Jakie są zalety tworzenia interfejsu dla każdej klasy obiektu?

Nie ma żadnej korzyści. Nie do tego służą interfejsy.

Czy interfejs powinien zawierać tylko metody "getter"? Dlaczego nie także setera?

Dopóki jest to metoda, interfejsy nie dbają o ich funkcjonalne zachowanie.

Dlaczego powinienem utworzyć dla każdej klasy obiektów interfejs?

Ponownie, nie jest to celem interfejsu. Rozważ, że jako Redundant.

Jeśli rozumiesz jakie są interfaces, zdasz sobie sprawę, ich prawidłowe wykorzystanie

Implementacja interfejsu pozwala klasa by stać się bardziej formalny o zachowaniu obiecuje dostarczyć. Interfejsy tworzą umowę między klasą a światem zewnętrznym, a umowa ta jest egzekwowana w czasie kompilacji przez kompilator.

3

Interfejsy służą do opisywania umów. Albo do użytku wewnętrznego w aplikacji, dostarczając abstrakcji do kilku implementacji, albo może dostarczyć je podmiotom zewnętrznym do ich implementacji.

W interfejsie może być dowolna liczba metod, których celem jest egzekwowanie ich implementacji w klasach implementacji, aby umowa była utrzymywana.