Placer la fois l'interface et la mise en œuvre est un lieu commun, et ne semble pas être un problème.
Prenez l'exemple de l'API Java -- la plupart des classes sont les deux des interfaces et de leurs implémentations inclus dans le même package.
Prenez l'exemple de l' java.util
paquet de:
Il contient les interfaces comme l' Set
, Map
, List
, tout en ayant également la implémentations telles que l' HashSet
, HashMap
et ArrayList
.
En outre, la documentation Javadoc sont conçus pour bien fonctionner dans ces conditions, qu'il sépare de la documentation sur les Interfaces et les Classes de vues lors de l'affichage du contenu de l'emballage.
Avoir des paquets uniquement pour les interfaces peuvent en fait être un peu excessif, à moins qu'il existe un très grand nombre d'interfaces. Mais séparer les interfaces dans leurs propres paquets juste pour le plaisir de faire des sons comme une mauvaise pratique.
Si la différenciation le nom d'une interface à partir d'une mise en œuvre est nécessaire, on pourrait avoir une convention de nommage pour rendre les interfaces plus facile à identifier:
Préfixe le nom de l'interface avec un I
. Cette approche est pris avec les interfaces de la .NET framework. Il serait assez facile de dire qu' IList
est une interface pour une liste.
Utiliser l' -able
suffixe. Cette approche est vu souvent dans l'API Java, comme Comparable
, Iterable
, et Serializable
pour n'en nommer que quelques-unes.