Das Platzieren sowohl der Schnittstelle als auch der Implementierung ist an der Tagesordnung und scheint kein Problem zu sein.
Nehmen wir zum Beispiel die Java-API - die meisten Klassen haben beide Schnittstellen und ihre Implementierungen im selben Paket.
Nehmen Sie zum Beispiel das java.util
Paket:
Es enthält die Schnittstellen wie Set
, Map
, List
, während auch die Implementierungen, die wie HashSet
, HashMap
und ArrayList
.
Darüber hinaus sind die Javadocs so konzipiert, dass sie unter diesen Bedingungen gut funktionieren, da die Dokumentation bei der Anzeige des Paketinhalts in die Ansichten Schnittstellen und Klassen unterteilt wird .
Pakete nur für Schnittstellen zu haben, kann tatsächlich etwas übertrieben sein, es sei denn, es gibt eine enorme Anzahl von Schnittstellen. Aber die Schnittstellen in ihre eigenen Pakete zu trennen, nur um dies zu tun, klingt nach schlechter Praxis.
Wenn es notwendig ist, den Namen einer Schnittstelle von einer Implementierung zu unterscheiden, kann eine Namenskonvention verwendet werden, um die Identifizierung von Schnittstellen zu vereinfachen:
Stellen Sie dem Schnittstellennamen ein vor I
. Dieser Ansatz wird mit den Schnittstellen im .NET Framework verfolgt. Es wäre ziemlich einfach zu sagen, dass dies IList
eine Schnittstelle für eine Liste ist.
Verwenden Sie das able
Suffix - . Dieser Ansatz wird häufig in der Java-API verwendet, z. B. Comparable
und Iterable
, Serializable
um nur einige zu nennen.