欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MVC架构中的Repository模式 个人理解

程序员文章站 2022-06-19 10:38:30
关于MVC架构中的Repository模式 关于MVC架构中的Repository模式 关于MVC架构中的Repository模式 关于MVC架构中的Repository模式 个人理解:Repository是一个独立的层,介于领域层与数据映射层(数据访问层)之间。它的存在让领域层感觉不到数据访问层的 ......

关于mvc架构中的repository模式

个人理解:repository是一个独立的层,介于领域层与数据映射层(数据访问层)之间。它的存在让领域层感觉不到数据访问层的存在,它提供一个类似集合的接口提供给领域层进行领域对象的访问。repository是仓库管理员,领域层需要什么东西只需告诉仓库管理员,由仓库管理员把东西拿给它,并不需要知道东西实际放在哪。

的理解():

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。