我一直在我一直在我的存储库模式研究过程中读取混淆。 我使用这个词时,他们只是意味着一个数据访问层想,如果人们都(错误?)。
由于“资源库”中没有的索引中找到的设计模式 (GOF),我转身的企业应用架构模式 (福勒)。 福勒似乎非常清楚(页323)时,他指出, 客户创建一个标准的对象 ,并把它传递给存储库,以获得满意的结果。 它看起来是这样的:
public class Person
{
public List<Person> Dependents()
{
Repository repository = Registry.personRepository();
Criteria criteria = new Criteria();
criteria.equal(Person.BENEFACTOR, this);
return repository.matching(criteria);
}
}
是标准的对象是什么让仓库的仓库? 如果没有,是什么呢? 如果抽象的持久性机制(因此构造查询)为目标,以什么方式存储库从simpe DAL / ORM呼叫这样的不同:
public class PersonLogic
{
public List<Person> GetDependents()
{
IPersonData personData = DependencyContainer.Resolve<IPersonData>();
return personData.GetDependents();
}
}
对我来说,区别如下:
*与存储库模式,客户端构造不同条件的对象,并调用匹配()方法就可以了。
*使用简单的DAL,客户只需拨打基础上,他们想要的东西不同的方法。
难道还有比这更给它? 是程序员错误地使用术语“资源库”的时候,他们真的是DAL?
编辑
大卫·奥斯本发送此链接到持久性模式 。 它指出:
基本上,Repository模式只是意味着把一个门面在你的持久化系统,使您可以不必知道如何持久性保护工作的应用程序代码的其余部分。
这是一个真正的数据访问层是什么。 它真的在我看来,一个仓库和DAL都是一样的东西,也许是“真正的”资源库使用标准的对象。