关于数据访问对象和观察者模式的困惑

时间:2013-07-10 16:54:51

标签: design-patterns dao observer-pattern

我正在尝试在我的Android应用中使用数据访问对象和观察者模式。该应用程序显示用户在特定日期吃过的餐点列表及其卡路里。用户可以从列表中删除该项目。

代码的工作原理如下:

  • Activity类使用膳食数据访问对象中的方法返回膳食和卡路里列表List<Meal> = MealDAO.getAllMeals();

  • 该列表存储在膳食模型中:mealModel.setMealsList(mealList)

  • 膳食模型为Observable,并传递给ListView

  • Observer适配器
  • 当用户从listView中删除膳食时,活动使用DAO方法从数据库中删除膳食。 MealDAO.remove(3);

  • 然后,Activity重置模型中的列表,该列表调用notifyObservers并更新适配器。

    //删除后

    newMealList = MealDAO.getAllMeals();

    mealModel.setMealList(newMealList);

我不确定这是一个很好的方法,因为我必须重置mealModel中的列表。有更好的方法可以做到这一点还是没关系?

1 个答案:

答案 0 :(得分:1)

您的观点不应直接与DAO对话。

我会用MealDAO.remove(3);

替换MealDAO.removeById(idOfMeal);

您需要从ListView中删除膳食,然后将该列表与删除之前存在的列表进行比较,以找到已删除的项目。

将此项目(或更好 - 其ID)传递给DAO,并将其从DB中删除

如果您确定这是修改DB中膳食状态的唯一地方,则您不需要重置mealModel 中的列表。所以重置它会更安全。