Weißt du was? Aus der Perspektive eines JavaScript-Entwicklers, der versucht zu verstehen, was zum Teufel mit diesem Zeug los ist, möchte ich auf ein paar Dinge hinweisen, und jemand sagt mir bitte, was ich hier vermisse, wenn ich es bin weit weg von der Marke.
Schnittstellen sind wirklich einfach. Dumm, wahnsinnig einfach. Sie sind so dumm, wahnsinnig einfach, wie die Leute anfangs denken, weshalb es zu diesem Thema so viele doppelte Fragen gibt, weil der einzige Grund, sie zu verwenden, von Leuten unklar gemacht wurde, die versuchen, mehr aus ihnen zu machen, als sie sind und dort ist ein weit verbreiteter Missbrauch in jeder serverseitigen Java-Codebasis, der ich jemals ausgesetzt war.
Warum sollten Sie sie verwenden? Meistens würdest du nicht. Sie würden sie sicherlich nicht die ganze Zeit benutzen wollen, wie viele zu denken scheinen. Aber bevor ich zu dem Zeitpunkt komme, an dem Sie möchten, lassen Sie uns darüber sprechen, was sie NICHT sind.
Schnittstellen sind NICHT:
- in irgendeiner Weise eine Problemumgehung für jede Art von Vererbungsmechanismus, die Java fehlt. Sie haben nichts mit Vererbung zu tun, sie haben es nie getan und simulieren in keiner Weise etwas Vererbungsähnliches.
- unbedingt etwas, das dir bei Sachen hilft, die du geschrieben hast, genauso wie es dem anderen hilft, etwas zu schreiben, das dazu gedacht ist, mit deinen Sachen verbunden zu werden.
Sie sind wirklich so einfach, wie Sie denken, dass sie auf den ersten Blick sind. Die Leute missbrauchen die ganze Zeit dumm, daher ist es schwer zu verstehen, worum es geht. Es ist nur Validierung / Test. Sobald Sie etwas geschrieben haben, das einer Benutzeroberfläche entspricht und funktioniert, wird das Entfernen dieses "Implementierungs" -Codes nichts mehr beschädigen.
Wenn Sie die Schnittstellen jedoch korrekt verwenden, möchten Sie sie nicht entfernen, da der nächste Entwickler über ein Tool verfügt, mit dem er eine Zugriffsebene für einen anderen Satz von Datenbanken oder Webdiensten schreiben kann, damit der Rest Ihrer App fortgesetzt werden kann Verwenden, weil sie wissen, dass ihre Klasse fehlschlägt, bis sie die 100% vollständig erwartete Schnittstelle eingerichtet haben. Alles, was Schnittstellen tun, ist, Ihre Klasse zu validieren und festzustellen, dass Sie tatsächlich eine Schnittstelle implementiert haben, wie Sie es versprochen haben. Nichts mehr.
Sie sind auch tragbar. Indem Sie Ihre Schnittstellendefinitionen verfügbar machen, können Sie Personen, die Ihren unbelichteten Code verwenden möchten, eine Reihe von Methoden zur Anpassung geben, damit ihre Objekte ihn korrekt verwenden können. Sie müssen die Schnittstellen nicht implementieren. Sie konnten sie einfach auf ein Stück Notizblockpapier schreiben und das noch einmal überprüfen. Aber mit der Schnittstelle haben Sie eher eine Garantie, dass nichts versuchen wird zu funktionieren, bis es eine richtige Version der fraglichen Schnittstelle hat.
Also, wird eine Schnittstelle wahrscheinlich nie mehr als einmal implementiert? Völlig nutzlos. Mehrfachvererbung? Hör auf nach dem Regenbogen zu greifen. Java vermeidet sie aus einem bestimmten Grund und zusammengesetzte / aggregierte Objekte sind ohnehin in vielerlei Hinsicht flexibler. Das heißt nicht, dass Schnittstellen Ihnen nicht dabei helfen können, auf eine Weise zu modellieren, die Mehrfachvererbung zulässt, aber es ist wirklich keine Vererbung in irgendeiner Form und sollte nicht als solche angesehen werden. Es wird nur garantiert, dass Ihr Code erst funktioniert, wenn Sie alle von Ihnen festgelegten Methoden implementiert haben.