- 复用性低:多模块还有个作用,就是模块可以给多个应用复用,但是数据库相关逻辑都在同个 module,显然不好迁移;
2、多数据库方案
做法:各立山头方式,每个用到 DB 的子 module 都自己维护一个数据库;自己继承 RoomDatabase 去单独实现一个数据库;如下图:
优点:
- 无耦合、代码边界独立、复用性高;
缺点:
- 开销大:Room 的官方文档中提示了,每个 database 的实例都是「非常昂贵」的;因此多模块都有 DB 的情况下,可能存在较大的资源开销问题;
我思考的方案
我们先把遇到的问题点或者说期望做到的点梳理一下:
-
低耦合、模块容易迁移;
-
代码边界清晰,每个模块只管自己的 Model 和 DAO;
-
尽可能小的开销:单例;
直接说方案:Database 单例放在主 module 中;各个子 module 维护自己的 Model 和