使用带有dao Pattern的ContentProvider是正确的。 ?或者它会带来任何性能问题?
我会尽力解释。我有一个contentProvider。活动,道和豆..
这是代码:
class Bean(){
String name;
}
class Dao{
Activity activity;
public Dao(Activity activity){
this.activity = activity;
public List<Bean> getAllBean() {
Cursor c = activity.managedQuery(Bean.CONTENT_URI, PROJECTION,
null, null, Bean.DEFAULT_SORT_ORDER);
return BeanMapper.GetAllFromCursor(c);
}
}
}
Class Activity{
.....
onCreate(....){
Dao dao = new Dao(this);
List<Bean> aList = dao.getAllBean();
}
....}
你怎么看?
问候
答案 0 :(得分:35)
DAO旨在为数据库提供抽象接口。 ContentProvider已经这样做了。
是的,您可以制作第二个抽象层来提供DAO API,但是......您正在移动设备上进行编程。直接使用ContentProvider API会更有效率。有很多例子。例如,查看Cursors和ListViews的耦合程度 - 查看CursorAdapter类,您将看到它是如何设计为直接从数据库光标映射到屏幕上的列表。查看ContentObserver,看看它是如何设计推送 - 通知游标更新以匹配更改的数据库,反过来,更新ListView中的单个列表元素,以反映该数据库实时更改...
你将花费巨大的努力重新发明轮子试图让所有现有的代码通过DAO模型。我不知道你的申请,但我不确定我看到你从中获得的好处。