Полагаю, это могло бы пойти на многие ОО языки. Я строю свои доменные объекты и не уверен, где лучше всего найти интерфейсы и абстрактные классы.
Если у меня есть пакет pets с различными реализациями абстрактного класса APet: он должен жить рядом с ними или в родительском пакете?
Как насчет интерфейсов? Кажется, что они почти должны жить выше реализаций в родительском пакете, поскольку потенциально могут быть другие подпакеты, которые его реализуют, хотя, кажется, существует более сильная корреляция между одним абстрактным классом и подпакетом.
, например
com.foo
com.foo.IConsumer (interface)
com.foo.APet (abstract)
com.foo.pets.Dog extends APet implements IConsumer
OR
com.foo
com.foo.IConsumer (interface)
com.foo.pets.APet (abstract)
com.foo.pets.Dog extends APet implements IConsumer
или что-то еще?