我读过这篇文章,我对此有疑问。
Repository模式是一个Facade,它抽象了你的持久性 远离你的域名。一方面,它假装是一个集合 另一个涉及你坚持不懈的技术问题 实施
这是否意味着您像创建集合一样命名存储库中的方法。例如:
addDomainModel(...)
getDomainModel(...)
等等?或者你会说出方法:
saveDomainModel(...)
fetchDomainModel(...)
什么是最好的,或者最正确的?我是否应该使用方法名称来说明它添加的内容,或者只是:
add(...)
get(...)
就像在正常的收藏中那样?
http://devlicio.us/blogs/casey/archive/2009/02/20/ddd-the-repository-pattern.aspx
答案 0 :(得分:1)
没有要求。您可以使用最自然的方式命名方法。 通常我的存储库看起来像这样(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方法可以用于创建/更新/删除实体,但另一个只是列出或搜索数据库并返回适合视图的模型。您可以根据用途添加或命名方法,您不必将存储库实现为集合(即实现预定义的接口),只需将其视为一个。重要的是保持域与持久性实现无关。
答案 1 :(得分:0)
DDD的目标之一是,域专家可以阅读代码。因此,您应该命名您的方法以使您的代码更具可读性。从这个角度来看,在我看来,itemRepository.add(item)甚至items.add(item)比例如更容易理解。 itemRepository.saveItem(项目)。看看这个: