Das vorherige Beispiel zeigte die Verwendung von Standardmethoden, jedoch nicht in einem praktischen Szenario.
Die Series-Schnittstelle war weit verbreitet und viele Programme waren davon abhängig.
Es wurde festgestellt, dass mehrere Implementierungen von Series eine Methode hinzugefügt haben, die ein Array mit den nächsten n Elementen der Serie zurückgibt.
Es wurde beschlossen, die Series-Schnittstelle mit der Methode getNextArray(int n) zu verbessern, wobei n die Anzahl der abzurufenden Elemente angibt.
Vor Standardmethoden würde das Hinzufügen dieser Methode vorhandenen Code beschädigen, der sie nicht definiert hat.
Mit Standardmethoden kann die neue Methode zur Serienschnittstelle hinzugefügt werden, ohne dass es zu Problemen in vorhandenen Codes kommt.
In einigen Fällen melden Standardmethoden, die einer Schnittstelle hinzugefügt werden, bei Verwendung einen Fehler, wenn es nicht möglich ist, eine Implementierung bereitzustellen, die in allen Situationen funktioniert.
Diese Standardmethoden definieren optionalen Code.
In bestimmten Fällen kann eine Standardmethode definiert werden, die in jeder Situation funktioniert.
Die Methode getNextArray() ist ein Beispiel, da sie mit der Methode getNext() implementiert werden kann, die bereits von der Series-Schnittstelle benötigt wird.
Es ist möglich, die neue Version von Series mit der Standardmethode getNextArray() zu implementieren.
Die standardmäßige getNextArray()-Methode wird mithilfe der getNext()-Methode implementiert, die bereits in der ursprünglichen Serienspezifikation vorhanden ist.
Jede Klasse, die Series implementiert, kann getNextArray() verwenden, ohne die Methode überschreiben zu müssen.
Bestehender Code wird durch Hinzufügen von getNextArray() nicht ungültig.
Klassen können bei Bedarf ihre eigene Implementierung von getNextArray() bereitstellen.
Vorteile der Standardmethode:
Ermöglicht die Weiterentwicklung von Schnittstellen, ohne dass vorhandener Code ungültig wird.
Bietet optionale Funktionalität, ohne dass eine Platzhalterimplementierung erforderlich ist.
Wenn im Fall von getNextArray() eine Series-Implementierung die Methode nicht benötigt, muss sie keine Platzhalterimplementierung bereitstellen, was zu einem saubereren Code führt.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3