如何在另一个界面中隐藏界面?

Noa*_*ein 5 oop android design-patterns interface kotlin

我想写一个Android库,后者又使用另一个Androd库.

假设我想写libHigh哪个使用另一个libLow

libLow中有一个接口:

interface LowLevelInterface{
   fun methodA()
}
Run Code Online (Sandbox Code Playgroud)

我在我的更高级库libHigh中实现了这个:

open class OpenClassImpl : LowLevelInterface {
  override fun methodA(){//..}
}
Run Code Online (Sandbox Code Playgroud)

它是一个'开放'类,因为稍后在app层中我希望延伸OpenClassImpl. 但我不想让界面'LowLevelInterface'可见,以便以后的应用程序级别使用.

如何在libLow中隐藏上层应用程序级别的界面?

Ale*_*nov 0

这取决于您现有的代码是否有效,或者需要花费多少精力,但您可以有一个实现该接口的属性,而不是直接执行它:

open class OpenClassImpl {
    // or protected/private
    internal val lowLevelImpl: LowLevelInterface = { 
        // can access privates of OpenClassImpl here
    }
}
Run Code Online (Sandbox Code Playgroud)

并更改相关调用以通过它。