我想为我的项目实现Repository设计模式,但是不清楚在存储库中是否使用CRUD操作。有些资源说您不应该使用更新/保存/删除方法,因为存储库仅用于保存内存中的对象,您应该为其他操作提供服务。
哪一个是最好的方式?
感谢。
答案 0 :(得分:3)
存储库模式的Martin Fowler’s definition摘要:
使用类似集合的接口访问域对象,在域和数据映射层之间进行调解。
因此,如果我们同时使用add
和update
方法,我可以声称它不是一个类似集合的界面,对吧?在添加到类似集合的集合时,我不需要费心检查对象是否已存在。
有两种常见的添加/更新方法:
面向集合的存储库确实试图模仿内存中的集合,因此如果对象已经更新但已经存在于集合中,则不需要重新添加对象。存储库(或隐藏在其下方的层,例如ORM)应该注意跟踪对实体的更改。您在第一次创建对象时只需add
一个对象,然后在更改实体后不再需要其他方法。
面向持久性的存储库知道在进行更改后需要显式“保存”对象,因此在创建实体或更改实体时,您可以使用实体调用save
。 p>
(这些是我对Vaughn Vernon在Implementing Domain-Driven Design中定义的解释。)
delete
很好,但也许remove
会是一个更好的名字。