Lassen Sie uns den scheinbaren Widerspruch zwischen Punkt 22 und 41 des Buches ansprechen:
Punkt 22: „Wenn Sie keinen Typ definieren möchten, verwenden Sie keine Schnittstelle.“
Dieser Artikel legt nahe, dass Sie Schnittstellen nicht für Dinge verwenden sollten, die keinen echten Typ oder keine konkrete Funktionalität darstellen. Beispielsweise ist die Verwendung einer Schnittstelle nur zum Speichern von Konstanten keine gute Vorgehensweise. Schnittstellen sollten verwendet werden, um Verträge oder Verhaltensweisen zu definieren, die Klassen implementieren sollen.
Punkt 41: „Wenn Sie wirklich einen Typ definieren möchten, verwenden Sie eine Schnittstelle.“
In diesem Artikel geht es um die Verwendung von Schnittstellen, insbesondere Markierungsschnittstellen, um einen Typ zu definieren, der Klassen auf eine Weise kategorisiert oder markiert, die zur Kompilierungszeit überprüft werden kann. Eine Markierungsschnittstelle definiert keine Methoden, definiert aber dennoch einen logischen Typ, der verwendet werden kann, um das Verhalten von Klassen zur Kompilierungszeit zu überprüfen.
Abgleich der Elemente
Der Schlüssel zum Verständnis beider Elemente ist der Unterschied zwischen der Definition eines nützlichen Typs und der angemessenen Verwendung einer Schnittstelle.
Punkt 22 besagt, dass die Verwendung von Schnittstellen für Dinge vermieden werden soll, mit denen keine bestimmte Funktionalität oder kein bestimmtes Verhalten verbunden ist. Die Idee ist, dass Schnittstellen verwendet werden sollten, um klare Verträge zu definieren, denen Klassen folgen müssen.
Punkt 41 empfiehlt die Verwendung von Schnittstellen (einschließlich Markierungen), wenn Sie einen Typ definieren möchten, der Klassen für einen bestimmten Zweck kategorisiert oder markiert und der zur Überprüfung während der Kompilierung verwendet werden kann.
Praktische Anwendung
Punkt 22: Vermeiden Sie Folgendes:
public interface Constants { String SOME_CONSTANT = "value"; int ANOTHER_CONSTANT = 42; }
Dies definiert keinen Typ oder Verhalten; Es ist nur ein Container mit Konstanten, was eine schlechte Verwendung einer Schnittstelle darstellt.
Punkt 41: Verwenden Sie Schnittstellen, um einen Typ zu markieren:
public interface PhysicalProduct { // Interface marcadora sem métodos } public class Book implements PhysicalProduct { // Implementação da classe que indica que é um produto físico }
Hier definiert die Schnittstelle „PhysicalProduct“ einen logischen Typ, der überprüft und für bestimmte Zwecke verwendet werden kann, beispielsweise für die Versandberechnung, um sicherzustellen, dass nur physische Produkte berücksichtigt werden.
Abschluss
Beide Punkte ergänzen einander, indem sie Hinweise geben, wie und wann Schnittstellen angemessen genutzt werden. Die Prämisse ist, dass Schnittstellen zur Definition sinnvoller Typen und klarer Verträge verwendet werden sollten, sei es durch Methoden, die das Verhalten definieren, oder als Markierungen, die Klassen auf logische und nützliche Weise kategorisieren.
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