我现在正在开发一个库。迷你结构就像
AwesomeLib
----Core
-Engine
-Manager
-...
----Services
-AServices
-BServices
-.....
我不希望客户端访问某些部分,例如核心包中的引擎或管理器。但我在服务部分需要它们。所以我不能使用默认类。我也不想在同一个包中收集所有类。
注意:我只给客户 jar-aar 文件。
注意 2:我不想保护我的代码。只想使用封装。
如果你想要的是封装,试试这个:
- 将
Engine
和Manager
设为私密 - 为每个接口创建一个公共接口(使它们实现接口(
- 对于每个接口(或每个逻辑组(创建一个 Factory 类,该类将创建
Object
,但仅将其作为其接口返回。
实现细节都将隐藏在接口后面,封装所有逻辑。
客户端将能够使用工厂来创建接口的实现,但不知道实现细节或系统逻辑的其余部分,因此对它们毫无用处。