2015-10-27 15 views
5

Ich lese J. Bloch ‚s effektive Java und er sagte folgendes:Verständnis DAO-Muster und Schnittstellen

Sobald eine Schnittstelle freigegeben wird und weitgehend umgesetzt, es ist fast unmöglich zu ändern. So

, betrachten nun die einfache Schnittstelle für DAO-pattern:

public interface UserDao{ 

    public User getById(int id); 

    public Collection<User> getAll(); 

    public boolean delete(int userId); 

    public boolean update(User u); 

} 

Dies ist, wie meine Dao Schnittstelle aussah, als es zunächst freigegeben wurde. Zu der Zeit musste ich einige Funktionen hinzufügen, um alle Benutzer durch seine registration_date oder etwas ähnliches zu aggregieren. Also musste ich dem DAO-Interface entsprechende Methodendeklarationen hinzufügen und es implementieren.

Darüber hinaus kann ich mir nicht vorstellen, wie DAO -interfaces überhaupt mehr oder weniger stabil sind, weil das Hinzufügen einiger neuer DAO-Operationen sehr oft passiert.

Vielleicht ist es meine DAO-Design-Katastrophe oder Schnittstellen sind kaum geeignet für DAO s?

+1

Sie können öffentliches Schlüsselwort von Ihrer Schnittstelle entfernen, da sie redundant sind. – kkhipis

Antwort

6

Ich denke, dieser Satz von J. Bloch ist für öffentliche Schnittstellen gedacht, und nicht für Ihren DAO-Fall.

Denken Sie an das Erstellen einer öffentlichen API, damit jeder Programmierer Ihre Plattform verwenden kann. Wenn Sie diese Schnittstelle ändern, benötigen Sie Programmierer, um seinen Code anzupassen, so dass dies frustrierend sein wird.

Wenn Sie jedoch eine Schnittstelle für den Zweck Ihrer internen App erstellen, gehen Sie dieses Risiko nicht ein, und es lohnt sich, Ihre Schnittstelle nach Bedarf weiterzuentwickeln.

Offensichtlich müssen Sie überlegen, wie viele Klassen Ihre Schnittstelle implementieren und die Kosten der Änderung übernehmen.

+2

* Ich denke, dieser Satz von J. Bloch ist für öffentliche Schnittstellen gedacht. * Einverstanden. Interne Schnittstellen in einem Projekt ändern sich ständig. – Manu