MVC架构中的Repository模式 个人理解
关于MVC架构中的Repository模式
个人理解:Repository是一个独立的层,介于领域层与数据映射层(数据访问层)之间。它的存在让领域层感觉不到数据访问层的存在,它提供一个类似集合的接口提供给领域层进行领域对象的访问。Repository是仓库管理员,领域层需要什么东西只需告诉仓库管理员,由仓库管理员把东西拿给它,并不需要知道东西实际放在哪。
tabbycat的理解(来源):
1. Repository模式是架构模式,在设计架构时,才有参考价值;
2. Repository模式主要是封装数据查询和存储逻辑;
3. Repository模式实际用途:更换、升级ORM引擎,不影响业务逻辑;
4. Repository模式能提高测试效率,单元测试时,用Mock对象代替实际的数据库存取,可以成倍地提高测试用例运行速度。
评估:应用Repository模式所带来的好处,远高于实现这个模式所增加的代码。只要项目分层,都应当使用这个模式。
关于泛型Repository接口(来源):
仅使用泛型Repository接口并不太合适,因为Repository接口是提供给Domain层的操作契约,不同的entity对于Domain来说可能有不同的操作约束。因此Repository接口还是应该单独针对每个Eneity类来定义。
泛型的Repository<T>类仍然用来减少重复代码,只是不能被UserRepository类直接继承,因为这样Delete方法将侵入User类,所以改为在UserRepository中 组合一个Repository<T>,将开放给domain可见且又能使用泛型重用的功能委托给这个Repository<T>
Repository与Dal的区别(来源):
Repository是DDD(领域驱动)中的概念,强调Repository是受Domain驱动的,Repository中定义的功能要体现Domain的意图和约束,而Dal更纯粹的就是提供数据访问的功能,并不严格受限于Business层。
使用Repository,隐含着一种意图倾向,就是 Domain需要什么我才提供什么,不该提供的功能就不要提供,一切都是以Domain的需求为核心;而使用Dal,其意图倾向在于我Dal层能使用的数 据库访问操作提供给Business层,你Business要用哪个自己选。换一个Business也可以用我这个Dal,一切是以我Dal能提供什么操 作为核心。
为了构建更加适应未来变化以及更加易于测试的MVC应用程序,你应该考虑使用Repository模式。当你使用Repository模式时,你会创建一个独立的repository类,它包含了所有的数据访问逻辑。
当你创建repository类时,你创建了一个接口,该接口代表着所有由repository类所使用的方法。在你的控制器中,你针对接口编写代码,而不是针对repository。通过这种方式,你以后可以使用不同的数据访问技术来实现repository。
转载于:https://www.cnblogs.com/frank0812/p/9834887.html
MVC架构中的Repository模式 个人理解相关推荐
- java repository模式_MVC架构中的Repository模式 个人理解
个人理解:Repository是一个独立的层,介于领域层与数据映射层(数据访问层)之间.它的存在让领域层感觉不到数据访问层的存在,它提供一个类似集合的接口提供给领域层进行领域对象的访问.Reposit ...
- [vue] 说说你对MVC、MVP、MVVM模式的理解
[vue] 说说你对MVC.MVP.MVVM模式的理解 MVVM用视图模型代替了MVP中的展示器,视图模型和视图实现了双向绑定,当视图发生变化的时候视图模型也会发生改变,当视图模型变化的时候视图也随之 ...
- MVC架构和SSM框架的个人理解
MVC架构和SSM框架的个人理解 前言 一.原生JavaWeb对应MVC架构 二.SSM框架对应MVC架构 第一块内容(MyBatis): 第二块内容(Spring): 第三块内容(SpringMVC ...
- MVC架构中,用户的请求简单梳理
MVC架构中,用户的请求分为下面3个步骤: 终端用户发送请求,路由器将请求路由到合适的Controller,Controller是逻辑实体和行为action的集合. Controller将请求映射到特 ...
- JavaScript中发布/订阅模式的理解
订阅发布模式的介绍 发布订阅模式,它定义了一种一对多的关系,可以使多个观察者对象对一个主题对象进行监听,当这个主题对象发生改变时,依赖的所有对象都会被通知到. 在生活中我们常常遇到这样一种情况,我们在 ...
- Android 架构之 MVC 架构模式
前言 由于 MVP.MVVM.组件化架构的兴起,MVC 架构在 android 中的应用变得越来越少,但 MVC 是基础,理解好 MVC 才能更好的理解 MVP,MVVM,因为后两种都是基于 MVC ...
- JSP中应用MVC架构
MVC模式,将应用程序分为3个部分 模型层--Model 视图层--View 控制层--Controller MVC是这三部分英文字母的缩写 在JSP开发中,也可以应用MVC 模型层 是应用程序的核心 ...
- 第2章[2.3] 基于Ext JS的MVC/MVVM架构的应用开发模式
Ext JS 对MVC 和MVVM两种架构都支持.这两种架构都是根据逻辑划分程序的代码,两种各有优劣. MVC是什么? Model, View , Control的首字母. 在MVC架构中,大多数类都 ...
- Java MVC 架构初学者指南
如果您与 Web 开发场景相关,那么您肯定会遇到数百次(甚至更多)首字母缩略词"MVC".MVC 是当今 Web 编程世界中谈论最多的设计模式之一,这是正确的.在本文中,我们将带您 ...
最新文章
- 例题6-4 破损的键盘(又名:悲剧文本)(Broken Keyboard(a.k.a. Beiju Text), UVa 11988)
- 今天遇到一个很奇怪的问题,XP系统屏幕全部旋转90度
- Python生物信息学③提取差异基因
- 漫画:什么是 “抽象工厂模式” ?
- bt下载加速 BitTorrent trackers服务器列表
- 深度网络模型裁剪和发布正规化
- 异常解决(一)-- RuntimeError: expected device cpu but got device cuda:0
- spring bean配置_在运行时交换出Spring Bean配置
- bzoj1225 [HNOI2001] 求正整数 约数个数定理+对数
- __str__和__repr__
- 2015-11-23 12:50:55
- OAuth三方授权登录
- Unity 网格合并MeshBaker(一)
- 【车载】轮速-AK协议
- データファイルのアップロードとダウンロード
- SuperMap iDesktop Cross 8C(2017)产品介绍
- SSTV 建伍TK8185 连接电脑
- 致远OA表单自定义函数(计算N年后今天的日期 )
- Ripro子主题-站壳jizhi-chlid极致主题QIW源码市场
- 网优谷的Linux真的不一样
热门文章
- c swap方法在哪个库里面_swap
- django关闭浏览器,怎样清除 cookies 和 session
- (9) ab测试工具安装与使用
- (12) ejb学习: JPA的传播属性
- php免登录接口,PHPWind 8.0 论坛免登陆发布接口发布
- c语言选择排序_冒泡、插入、选择排序(C语言)
- /usr/lib/python2.6/site-packages/pycurl.so: undefined symbol: CRYPTO_set_locking_callback
- 监听localStorage变化(同页面监听)
- java图像处理之查找表实现图像处理加速
- 个人成长:2021年7月记