Usa la custodia per l'interfaccia

0

Durante l'esecuzione di alcuni video di lezione sull'interfaccia. Ho notato

If we don't know about implementation, just requirement specification then go for interface.

Quale può essere lo scenario? Sebbene io abbia usato l'interfaccia in molti casi, ma non ho gwt l'essenza dell'interfaccia, come affermato.

    
posta Surya Bhusal 25.07.2018 - 17:46
fonte

2 risposte

7

If we don't know about [the] implementation, just the requirement specification, then go for interface.

Ciò significa che puoi tracciare un'architettura progettando e scrivendo le interfacce in primo luogo e rinvia la scrittura delle implementazioni che soddisfano tali interfacce in un secondo momento.

Supponiamo che tu sia uno dei progettisti dell'ambiente di sviluppo Java. Vuoi fornire una funzione di ordinamento per le tue raccolte. Ma non sai come ordinare i tipi personalizzati (ad esempio le classi definite dall'utente) perché non sai come determinare se un oggetto di una data classe è maggiore di un altro. Non puoi scrivere un'implementazione per quel confronto, perché non sai come farlo per qualsiasi classe data che qualcuno possa scrivere.

Quindi fornisci un'interfaccia chiamata Comparable . Definisce un metodo

int compare<T>(T other)

che accetta come parametro un "altro" oggetto del tipo specificato e restituisce un numero che indica a Java se l'altro oggetto è uguale, maggiore o minore di this oggetto. Ora puoi consentire alle persone di derivare la loro classe dalla tua interfaccia e scrivere un'implementazione del metodo Compare . La tua funzione di ordinamento ora comprende come ordinare questi oggetti perché comprende Comparable e può chiamare il loro metodo Compare per confrontare due istanze dei loro oggetti.

    
risposta data 25.07.2018 - 19:01
fonte
1

L'essenza di un'interfaccia è un contratto.

Non mi interessa come il risultato è raggiunto, solo quello

  • La funzione esiste
  • Ha un tipo di ritorno X
  • Ha parametri Y

Se mi interessa l'implementazione, allora userei una classe base o una classe astratta, permettendomi di specificare parte del codice che deve essere eseguito da tutte le classi figlie.

    
risposta data 25.07.2018 - 17:55
fonte