为什么作者在一个项目中定义了一个空白接口?

Hel*_*oCW 5 android kotlin

以下代码来自项目https://github.com/skydoves/Pokedex

我不明白为什么作者需要定义一个空白接口Repository

使用空白界面有Repository什么好处?

存储库.kt

/** Repository is an interface for configuring base repository classes. */
interface Repository
Run Code Online (Sandbox Code Playgroud)

详细资料库.kt

class DetailRepository @Inject constructor(
  private val pokedexClient: PokedexClient,
  private val pokemonInfoDao: PokemonInfoDao
) : Repository {
   ...
}
Run Code Online (Sandbox Code Playgroud)

主存储库.kt

class MainRepository @Inject constructor(
  private val pokedexClient: PokedexClient,
  private val pokemonDao: PokemonDao
) : Repository {
   ...
}
Run Code Online (Sandbox Code Playgroud)

luk*_*jar 5

它被称为标记界面模式。它是没有任何方法或常量的接口。通常创建这样的接口是为了为标记的类提供特殊的行为。你可以在java中找到几个这样的接口。例如CloneableSerializable

Pokedex 的情况下,我认为原因要简单得多。看起来这个界面只是为了对所有存储库进行分组而创建的。项目中从不使用存储库抽象。作者总是使用特定的实现。Repository 接口是多余的,但是当我们想要查找项目中的所有存储库时它会很有用 :)