2017-06-26 4 views
1

Ich habe kürzlich ein paar Frühjahrsprojekte rezensiert. Ich sah eine Schnittstelle, die für eine Klasse in DAO und Service-Layer einiger Projekte erstellt wurde.Schnittstelle ohne Polymorphie

wie folgt aus:

 public interface EmployeeDao(){ 
     //some methods declaration 
    } 
    public class EmployeeDaoImp implements EmployeeDao(){ 
     // methods overriding 
    } 



    public interface CompanyDao(){ 
     //some methods declaration 
    } 
    public class CompanyDaoImp implements CompanyDao(){ 
     // methods overriding 
    } 

gibt es keine Notwendigkeit, in diesem Fall zu Polymorphismus.

Warum brauchen wir diese Schnittstellen?, Was ist der Vorteil dieser ?.

Auch ich entschuldige mich bei dir, wenn ich Fehler auf meinem Englisch grammer gemacht habe. Mein Englisch ist nicht sehr gut, Ich hoffe, ich könnte mich ausdrücken.

+0

siehe folgen https://stackoverflow.com/questions/383947/what-does -it-mean-to-program-to-a-interface –

+0

Der Vorteil liegt im Allgemeinen darin, dass Sie, wenn Sie die zugrunde liegende Datenbank ändern, zum Beispiel eine NoSQL-Datenbank anstelle von MySQ verwenden, das Impl ändern können andere Teile Ihres Codes. Selbst wenn Sie nur einen Impl in der Produktion haben, ist es hilfreich, in Komponententests einen zu verspotten, und Schnittstellen können dafür besser sein als konkrete Klassen. – yshavit

+0

Der andere Vorteil besteht darin, dass Sie eine Basisschnittstelle für mehrere abgeleitete Objekte haben und sie in verschiedenen Kontexten verwenden können, d. H. Sie können eine Liste von EmployeeDao erstellen, die von CompanyDao getrennt ist. Oder Sie können 'instanceof' verwenden, um die Objekte oder was auch immer zu sortieren. Auch wenn die Schnittstellen in ihnen keine Funktionen haben. – Serge

Antwort

-1

Spring verwendet Schnittstellen viel, weil sie das Konstruktionsprinzip „Programm mit einer Schnittstelle nicht auf eine Implementierung“

Siehe Programming to an interface