到目前为止,我已经习惯使用 DAO 从数据库中检索信息。不过,其他数据源也是可能的,我想知道该模式是否以及如何普遍应用。
例如,我现在正在开发一个在 Web 上获取 XML 的应用程序。XML 文件可以被认为是一个数据源,实际的获取在原理上类似于数据库请求。不过,我不太确定如何构建 DAO。
欢迎对这个主题提出任何意见。
例如,请参见此处的“将非数据库数据资源封装为 DAO 类”部分:
由于 DAO 仅根据对象表达 CRUD 操作,而从未提及其数据源,因此我不明白为什么这是一个问题。如果您的 DAO 从满足这些标准的接口开始,则客户端不需要知道它是根据 XML 还是关系数据库实现的。
.NET 的 LINQ 设法扭转这种局面。也许这是您可以针对此问题模拟的另一种设计。
您的 DAO 提供了通用方法 - 正如您已经说过的那样 - 独立于任何数据源。因此,您创建一个 DAO 接口,然后只提供不同的实现。其他类则仅使用 DAO 接口。
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
}
}