2015-10-27 26 views
5

sto leggendo J. Bloch s' efficace Java e ha detto quanto segue:intesa DAO-modello e le interfacce

Una volta che un'interfaccia viene rilasciato e ampiamente implementata, è quasi impossibile cambiare .

Così, ora considerano la semplice interfaccia per DAO-pattern:

public interface UserDao{ 

    public User getById(int id); 

    public Collection<User> getAll(); 

    public boolean delete(int userId); 

    public boolean update(User u); 

} 

Questo è come la mia interfaccia Dao sembrava quando è stato rilasciato in primo luogo. Per il momento, ho dovuto aggiungere alcune funzionalità agli utenti al fine di aggregare tutti gli utenti con il suo registration_date o qualcosa di simile. Quindi, ho dovuto aggiungere dichiarazioni di metodo corrispondenti all'interfaccia DAO e implementarla.

Inoltre per ora non riesco a immaginare come le interfacce DAO possano essere più o meno stabili, perché l'aggiunta di alcune nuove operazioni DAO avviene molto spesso.

Forse è il mio disastro di progettazione DAO, o le interfacce sono difficilmente adatte per DAO s?

+1

È possibile rimuovere la parola chiave pubblica dall'interfaccia, perché sono ridondanti. – kkhipis

risposta

6

Penso che la frase di J. Bloch sia pensata per le interfacce pubbliche e non per il tuo caso DAO.

Pensa di creare un'API pubblica per consentire a qualsiasi programmatore di utilizzare la tua piattaforma. Se stai cambiando questa interfaccia, stai richiedendo ai programmatori di adattare il suo codice, quindi sarà frustrante.

Ma se si sta creando un'interfaccia per lo scopo della propria app interna, non si assume tale rischio, e vale la pena di evolvere l'interfaccia di cui si ha bisogno.

Ovviamente bisogna considerare quante classi implementano la propria interfaccia e si assumono il costo della modifica.

+2

* Penso che la frase di J. Bloch sia destinata alle interfacce pubbliche. * Concordato. Le interfacce interne in un progetto cambiano continuamente. – Manu