如何使用会议室而不破坏MVP模式?

问题描述 投票:0回答:1

我正在我的应用程序中使用Room数据库,并且试图遵循MVP模式,因此我想使用演示者来调用执行数据库操作的函数。需要一个Android应用程序上下文来获取数据库引用,因此在我称为“视图(活动)”中:

AppDatabase db = Room.databaseBuilder(getApplicationContext(), AppDatabase.class, "AppDatabase").build();

AppDatabase是扩展RoomDatabase的抽象类,具有一堆android导入并且包含DAO接口。此设计来自Android的官方指南。

现在,如果我在演示者中传递并使用了AppDatabase对象(或DAO接口,因为它实际上包含数据库操作方法,那么它会破坏MVP模式吗? DAO包含SQL查询并具有大量的android导入,其方法类似于dao.insert(item)

编辑:

[AppDatabase类和ItemDao接口:

@TypeConverters({Converters.class})
public abstract class AppDatabase extends RoomDatabase {
    public abstract ItemDao itemDao();
}

@Dao
public interface ItemDao {
    @Query("SELECT * FROM item")
    List<Item> getAll();

    @Query("SELECT * FROM item WHERE date BETWEEN :from AND :to")
    List<Item> findItemsBetweenDates(LocalDate from, LocalDate to);

    @Insert
    void insert(Item... items);
}
java android database mvp
1个回答
0
投票

不,只要依赖项从View(活动或片段)传播到Presenter,就不会破坏MVP结构。最好公开DAO而不是应用程序数据库。

我还建议将AppDatabase类文件添加到您的帖子中,以使其更加明确。

© www.soinside.com 2019 - 2024. All rights reserved.