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

Java 如果库有一些副作用,这可以吗?,java,spring,kotlin,architecture,software-distribution,Java,Spring,Kotlin,Architecture,Software Distribution,我正在开发一些Kotlin库,我有以下概念问题: 第一个库基于spring的类路径扫描器,并打算用作spring扩展,因此它将spring核心作为依赖项。这样行吗?我的库的潜在用户将如何处理不同的spring版本 第二个库基于第一个库,用于p2p网络。它与其他对等方同步,并提供共享状态,库用户可以使用特殊的预定义spring服务轻松检索该状态。图书馆有这样的副作用可以吗?也许有一些实现/分发此类库的模式 如果这不好,请你指导我如何正确地做这件事。 提前感谢。这是一个有点笼统的问题,有具体的例子将

我正在开发一些Kotlin库,我有以下概念问题:

第一个库基于spring的类路径扫描器,并打算用作spring扩展,因此它将spring核心作为依赖项。这样行吗?我的库的潜在用户将如何处理不同的spring版本

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

如果这不好,请你指导我如何正确地做这件事。
提前感谢。

这是一个有点笼统的问题,有具体的例子将有助于理解这样做是否合适

但一般来说:

如果您的库依赖于特定版本的其他库,则这是很好的。大多数图书馆都有。问题是你所依赖的这个图书馆有多沉重和突兀。不幸的是,众所周知,Spring库两者兼而有之。对于库的最终用户,如果发生冲突,他只需选择是否要更新库的Spring版本 具有某种分布状态不一定是副作用。例如,EhCache是一个分布式缓存库。基本模式是尽可能的坚固。当我开发时,我让它依赖于接口而不是可靠的实现,因此,例如,如果有人决定不想使用您的库Spring组件,他可以提供一个替代解决方案。
同样,这些都是基本的指导原则,没有看到您的代码。如果您打算开放源代码,请随意分享具体信息,以从StackOverflow社区获得更具体的见解。

产生副作用并不是唯一的问题,特别是如果库的全部目的是在某个时候产生副作用。然而,无论你有什么副作用,都应该集中在你的计划中的一部分。程序的其余部分可以使用纯函数进行操作,只需将处理后的数据传递给某个引起副作用的函数即可。