【发布时间】:2019-07-15 04:51:06
【问题描述】:
我想写一个 Android 库,它又使用另一个 Androd 库。
假设我想写libHigh,它使用另一个libLow
libLow中有一个接口:
interface LowLevelInterface{
fun methodA()
}
我在更高级别的库 libHigh 中实现了这一点:
open class OpenClassImpl : LowLevelInterface {
override fun methodA(){//..}
}
这是一个“开放”类,因为稍后在应用层我希望从OpenClassImpl 扩展。
但我不想让界面“LowLevelInterface”可见以供以后上层应用使用。
如何从 libLow 中隐藏上层应用级别的接口?
【问题讨论】:
-
制作
private interface LowLevelInterface。但在这种情况下,您应该将其所有子类写在一个文件中。 -
也许你可以在多个项目中拆分你的代码库,将
LowLevelInterface声明为internal并在不同的模块中使用OpenClassImpl...见kotlinlang.org/docs/reference/visibility-modifiers.html#modules -
@TarasParshenko 我无权访问 LibLow
-
这样你就可以创建自己的私有接口并扩展
LibLow -
@TarasParshenko 你的意思是
private interface NewPrivateInterface : LowLevelInterface {}?
标签: android oop design-patterns kotlin interface