15 Stimmen

Android - Verwendung des Dao-Musters mit ContentProvider

Ist es korrekt, ContentProvider mit dem DAO-Muster zu verwenden? Oder bringt es Leistungsprobleme mit sich?

Ich werde versuchen zu erklären. Ich habe einen ContentProvider, eine Aktivität, ein DAO und ein Bean.

Hier ist der Code:

Klasse Bean(){

 String name;

}

Klasse Dao{

 Aktivität aktivität;

 public Dao(Aktivität aktivität){

 this.aktivität = aktivität;

 public List getAllBean() {

    Cursor c = aktivität.managedQuery(Bean.CONTENT_URI, PROJECTION,
                null, null, Bean.DEFAULT_SORT_ORDER);
    return BeanMapper.GetAllFromCursor(c);
    }
}

}

Klasse Aktivität{
.....

 onCreate(....){

  Dao dao = new Dao(this);
  List aList = dao.getAllBean();

}
....}

Was denkst du?

Grüße

35voto

jcwenger Punkte 11324

DAO ist darauf ausgelegt, eine abstrakte Schnittstelle zu einer Datenbank bereitzustellen. ContentProvider macht dies bereits.

Ja, du kannst eine zweite Abstraktionsschicht erstellen, um eine DAO-API bereitzustellen, aber... Du programmierst auf einem mobilen Gerät. Die direkte Verwendung der ContentProvider-API wird effizienter sein. Es gibt viele Beispiele dafür. Schaue dir zum Beispiel an, wie eng Cursors und ListViews gekoppelt sind - Schau dir die CursorAdapter-Klassen an und du wirst sehen, wie sie direkt von einem Datenbankcursor auf eine Liste auf dem Bildschirm abbilden. Betrachte ContentObserver und sieh, wie er entworfen ist, um einen Cursor zu aktualisieren, um eine geänderte Datenbank anzupassen und wiederum ein einzelnes Listenelement in einem ListView zu aktualisieren, um diese Datenbank in Echtzeit widerzuspiegeln...

Du wirst immense Anstrengungen darauf verwenden, das Rad neu zu erfinden, wenn du versuchst, all diesen vorhandenen Code durch ein DAO-Modell zu übertragen. Ich kenne deine Anwendung nicht, aber ich sehe nicht den Vorteil, den du daraus ziehst.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X