我读了这篇文章,但有一个疑问。
The Repository pattern is a Facade, that abstracts your persistence away from your Domain. On one side it pretends to be a collection – on the other it deals with the technical concerns of your persistence implementation.
这是否意味着您可以像创建集合一样命名存储库中的方法。例如:
addDomainModel(...)
getDomainModel(...)
等等?或者您会命名这些方法吗:
saveDomainModel(...)
fetchDomainModel(...)
什么是最好的或最正确的?我应该让方法名称说明它添加的内容,还是只是:
add(...)
get(...)
就像在普通集合中一样吗?
http://devlicio.us/blogs/casey/archive/2009/02/20/ddd-the-repository-pattern.aspx
最佳答案
没有这方面的要求。您可以以最自然的使用方式命名这些方法。 通常我的存储库看起来像这样(c# 代码)
public interface ImCommandRepository
{
Entity Get(int id);
Entity Get(string name);
void Save(Entity value);
void Delete(int id);
}
public interface ImQueryRepository
{
PaginatedResult<ViewModel> GetEntitiesA(int skip,int take);
PaginatedResult<ViewModel> SearchEntitiesB(string keyword,int skip,int take);
}
如您所见,我使用不同的存储库来更新持久性和查询持久性。虽然第一个方法具有非常常见的 CRUD 方法来处理将要创建/更新/删除的实体,但另一个方法只是列出或搜索数据库并返回适合 View 的模型。您可以根据使用情况添加或命名方法,您不必将存储库实现为一个集合(即实现预定义的接口(interface)),只需将其视为一个集合即可。重要的是要保持域与持久性实现无关。
关于java - DDD 中的存储库层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9342519/