【发布时间】:2022-01-15 17:56:54
【问题描述】:
考虑以下包在同一个组件中(多层应用)
- com.app.feature1
- com.app.feature2
两者都包含类。假设com.app.feature1 包含类A 和com.app.feature2 包含类B。两者都需要相同的代码来完成任务。让我们称它为doSomething() 并将它放在一个名为C 的类中。
如果我将C 类放在一个新包com.app.util 中并将其公开,A 和B 可以使用doSomething(),但更高组件的类可以使用C 的doSomething() 而我不不想那样。下一个修饰符是包私有。 A 和 B 与 C 不在同一个包中。所以他们不能使用C的doSomething()。
如何解决?
【问题讨论】:
-
在您的情况下,类
A和B从类C继承是否有意义? -
不,那里只有“愚蠢”的类(Mapper 等)
-
“mapper”怎么是一个愚蠢的类?听起来像是一个非常适合与继承一起使用的类。
-
它并不完美,但是您可以将
C类的doSomething公开并在JavaDoc 中写入,它不是公共API 的一部分,不应该使用。跨度> -
然后人们仍然会忽略 JavaDoc 并使用它。不过,我不知道
Mapper与我所问的有什么关系。A和B类不能扩展C类有什么原因吗?因为从 OP 告诉我们的内容来看,我没有看到,继承将解决问题而没有其他可能性的缺点。