# Interface und Implementierung getrennt



## Generic1 (16. Mai 2010)

Hallo,

in meinen Projekten mach ich es jetzt immer so, dass ich die Packages mit den Interfaces von den Packages mit den Implementierungen trenne,
Meine Frage wäre jetzt, ist das good practice oder gibt es da eine Standardisierung und macht man das bei allen Projekten so (Web-Applikationen, Enterprise-Applikationen, JavaStandard- Applikationen)?

So in der Art:

```
de.mycompany1.myproject1.persistance.dbconnection
de.mycompany1.myproject1.persistance.dbconnectionimpl
```

lg


----------



## musiKk (16. Mai 2010)

Ich würde sagen, dass das total egal ist. Der Benutzer des Interfaces sollte sich mit keiner Zeile Code von der Implementierung abhängig machen. Durch DI ist das ja auch kein Problem. Insofern hast Du da Narrenfreiheit. Deine vorgeschlagene Paketstruktur macht jedenfalls sofort deutlich, was wie zusammengehört und das ist imho die Hauptsache. Ich persönlich würde aus [c]impl[/c] allerdings ein Unterpaket machen, also [c]...dbconnection.impl[/c].

Persistance schreibt sich übrigens Persist*e*nce.


----------



## Noctarius (16. Mai 2010)

OSGi hat da eine Art sauberen Quasi-Standard geschaffen.

com.example.data <- Interfaces und Factory-Classes
com.example.data.internal <- Implementierungen

In OSGi werden dann zusätzlich alle internal Packages für externe OSGi Bundles (JAR-Dateien) versteckt und die Instanzen lassen sich nur über Factories erzeugen.


----------

