如果库有一些副作用,可以吗?

时间:2018-08-30 12:29:52

标签: java spring kotlin architecture software-distribution

我正在开发一些Kotlin库,并且遇到以下概念性问题:

  1. 第一个库基于spring的类路径扫描器,旨在用作spring扩展,因此它将spring-core作为依赖项。这个可以吗?我的库的潜在用户将如何处理不同的spring版本?

  2. 第二个库基于第一个库,旨在用于p2p网络。它与其他同位体同步,并提供共享状态,图书馆用户可以使用特殊的预定义spring服务轻松检索到。这样的库具有副作用可以吗?也许有一些实现/分发此类库的模式?

如果这样做不行,请您指导我如何正确执行此操作。 预先感谢。

1 个答案:

答案 0 :(得分:1)

这是一个一般性的问题,拥有具体示例将有助于理解这样做是“可以”还是“不可以”。

但一般来说:

  1. 如果您的库依赖于特定版本的其他库,那就很好。大多数库都可以。问题是您依赖的这个库有多沉重。不幸的是,众所周知,Spring库是两者。对于您的图书馆的最终用户,如果发生冲突,他只需选择是否要为您的图书馆更新自己的Spring版本
  2. 具有某种分布状态不一定是副作用。例如,EhCache是​​一个分布式缓存库。基本模式应尽可能牢固。当我开发caching for Vert.x WebClient library时,我使它依赖于接口而不是可靠的实现,因此,如果有人确定他不想使用您的库(例如Spring组件),他可以提供替代解决方案。

同样,这些是基本准则,没有看到您的代码。如果您打算开放源代码,请随时共享特定的内容,以便从StackOverflow社区获得更具体的见解。