为什么 DAO 必须是接口或抽象类?

Flo*_*her 5 sqlite android dao android-room android-architecture-components

我想了解 RoomDatabase 幕后发生的事情,它要求 DAO 是一个接口或一个抽象类。我已经搜索了很长一段时间,但所有文章和文档都只解释了如何,而不是原因。

Kei*_*ati 2

不仅仅是RoomRetrofit和其他库也使用这种模式,它被称为“接口编程”。您不必只是创建一个具体的实现,您只需指定您想要做的事情,它们就会为您提供一个按照您的要求运行的实现。

如需进一步研究,您可以查看这篇文章: https://tuhrig.de/programming-to-an-interface/