我应该设计一个可重用的组件。它将是一个带有 API 接口的 Java 库,隐藏所有实现细节,包括内部数据依赖。它需要客户端应用程序在调用任何方法之前需要在库中配置的一组静态数据
经过大量的辩论和讨论,我们提出了两种设计方法
第一种设计方法:静态数据在库内部,因此,采石和数据查找表的实现应该在内部实现,对库的客户端应用程序透明
在这种方法中,我们将执行以下操作:
a1。库内部依赖于一个抽象的静态数据接口,并且有各种数据源实现:例如:数据库查询实现,文件查询实现,配置查询实现
a2。客户端应用程序使用静态数据源配置实现反对这种方法的争论:
d1。图书馆不应建立数据库连接
d3。客户端绑定到数据模式,因为它不能更改查询。只有它可以将库指向数据源
在第二种设计方法中:静态数据被视为依赖项(即使它在库内部)。所以应该注入,即库的客户端应用程序需要实现所有静态数据查找
我们会做以下事情
:库实现了服务提供者接口 (SPI)
b. 客户端应用程序需要实现接口
c. 查找表与客户端应用程序一起使用反对这种方法的辩论
d1。静态数据在库内部,库的用户不必担心实现
d2。由于不同客户端的数据基本相同,因此会有冗余代码
d3。更多冗余代码 = 更多错误
我不确定要遵循哪种方法。如果你能从你的经验中回忆起一种优雅的方法,那对我来说真的很有帮助。
提前谢谢了!