假设有:
系统 A
,插件 B
。系统 A 定义了接口,插件实现接口功能。
但是出现了个依赖问题,因为插件 B
是作为默认插件放入系统 A
中的,所以 系统 A 依赖 插件 B。
插件 B 因为要有系统 A 的接口来规范,所以也需要依赖系统 A。
那么问题来了,这时候就会出现循环依赖问题,有什么解决办法吗?
1
loongwang 2019-05-21 16:00:11 +08:00
依赖倒置原则
|
2
frienmo 2019-05-21 17:00:01 +08:00
所有 API 定义在 C 里,A 里面向接口 C 编程,B 实现接口 C。
插件设计模式的话我们用的是 google autoservice |
3
palmers 2019-05-21 18:13:14 +08:00
我也觉得这时候应该拆分 A
|
4
binbinyouliiii OP |
5
mooncakejs 2019-05-21 19:10:34 +08:00
既然不想拆分,那就把 a 和 b 放一起。
|
6
palmers 2019-05-21 19:54:52 +08:00
1.“我得把插件用到类全分出来” 这个我觉得本来应该是一个协议或规范模块 独立的 没有任何依赖的
2. “很多类是跟系统强耦合的” 这个含义是 需要拆分出来的类是系统 A 强耦合的吗?那么 A 可以依赖拆分得到的独立模块来解决 3. ‘系统很多地方都需要使用可替换的“插件模式” ’ 这个也是这样 本来就应该将协议抽象 按照你现在需求和我的理解, 你面临的就是因为模块不够独立 很多需要细化的子模块放到了一个模块中, 所以出现了依赖问题 如果将现在的模块进行拆分 细化 耦合就解掉了 我也遇到过这种问题 一般这种问题都是因为业务的不断变更造成的 |
7
YzSama 2019-05-22 08:35:12 +08:00 via iPhone
抽插件 到顶层的 pom ?
|
8
wc951 2019-05-22 10:54:39 +08:00 via Android
依赖的 optional 设成 true
|