好的,我习惯于像这样构建我的项目
|--com.mycompany.interfaces
| |--IFoo1(public)
| |--IFoo2(public)
| |--IBar1(public)
| |--IBar2(public)
|
|--com.mycompany.foos.impl
| |--Foo1(default) implements IFoo1
| |--Foo2(default) implements IFoo2
|
|--com.mycompany.bars.impl
| |--Bar1(default) implements IBar1
| |--Bar2(default) implements IBar2
|
|--com.mycompany.services
| |-FooBarService (public)
我有一个包来组织所有接口,然后实现在它们自己的相关包中。
公共类 FooBarService 必须通过接口 IFoo1、IFoo2 等将 Foo1、Foo2 等的实例返回给该项目外的调用者。但是类 FooBarService 不能访问具体类 Foo1、Foo2 等,因为它们是包作用域的。
什么是不将具体类公开给外部库但仍将实现保留在有意义的多个包中的好方法?或者这甚至可能吗?在.net中,我可以将具体类指定为internal
,它们在哪里实现以及它们的命名空间是什么,但我想知道在java中是否可以使用这种结构?