探究Repository模式的两种写法与疑惑
现如今DDD越来越流行,园子里漫天都是介绍关于它的文章。说到DDD就不能不提Repository模式了,有的地方也叫它仓储模式。
很多时候我们对Repository都还停留在Copy然后使用的阶段, 我注意到Repository模式有两种流行的设计方式。
今天我就是想跟大家讨论下这两种设计方式之间的区别,同时弄清楚哪种方式更合理(无需纠结代码细节),见下图:
左右两边代码比较:
1、左边的Repository代码在实际使用中是最常见的,右边的使用更少一些。
2、左边代码的更难理解一些,右边的代码中规中矩,易于理解。
3、左边代码使用了IUserRepository : IRepository<User>,选择的是接口的继承,将Repository中对Entity的操作抽象为通用的CRUD操作和Entity的特殊操作两部分,但整体看起来是先分开后合并为一体,而右边的则没有采用接口继承方式。
上面是我个人对Repository两种组织方式的理解,但具体哪一种设计更优雅,两者的设计意图和区别在哪???其实没有定论。所以,也欢迎你发表一下自己的看法,欢迎拍砖。