Frage

Bis jetzt hat mich zu verwenden DAOs zum Abrufen von Informationen aus Datenbanken verwendet. Weitere Datenquellen sind möglich, obwohl und ich frage mich, ob und wie das Muster im allgemeinen angewandt werden könnte.

Zum Beispiel, ich arbeite jetzt an einer Anwendung, die auf der Web-XML abruft. Die XML-Datei als Datenquelle in Betracht gezogen werden könnte und der tatsächliche Abruf ist im Prinzip ähnlich wie eine Datenbankabfrage. Ich bin nicht ganz sicher, wie die DAO obwohl strukturiert werden könnte.

Jede Ansichten zu diesem Thema sind willkommen.

War es hilfreich?

Lösung

Siehe zum Beispiel „Einkapselung nicht-Datenbank Datenressourcen wie DAO-Klassen“ Abschnitt hier:

http://java.sun.com/blueprints/patterns/DAO.html

Andere Tipps

Da DAOs nur CRUD-Operationen in Bezug auf Objekte äußern, ohne jemals ihre Datenquelle bezieht, kann ich nicht sehen, warum dies eine Frage ist. Wenn Ihre DAO mit einer Schnittstelle beginnen, die diese Kriterien erfüllen Kunden müssen nicht wissen, ob es in Bezug auf XML oder einer relationalen Datenbank implementiert wird.

NET LINQ schafft diesen Trick zu drehen. Vielleicht ist es ein anderes Design, dass Sie für dieses Problem emulieren können.

Ihre DAO bietet generische Methoden, die - wie Sie bereits gesagt hat - unabhängig von einer Datenquelle. Daher Sie eine DAO-Schnittstelle erstellen und dann einfach verschiedene Implementierungen bieten. Andere Klassen dann nur die DAO-Schnittstelle verwenden.

public interface DummyDao
{
    Dummy getDummy(String id);
}

public class SqlDummyDao implements DummyDao
{
    public Dummy getDummy(String id)
    {
        // Do sql stuff and mapping to dummy bean here
    }
}

public class XmlDummyDao implements DummyDao
{
    public Dummy getDummy(String id)
    {
        XmlDocument xml = fetchRemoteXml(id);
        // do xml mapping to dummy bean here
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top