首页 > 其他分享 >Repository模式

Repository模式

时间:2022-09-19 17:44:51浏览次数:62  
标签:逻辑 持久 Repository 业务 模式 数据

之前一直很不理解为啥有了数据持久层之后还需要一个一层用来隔离数据持久层和业务逻辑层。数据库明明已经和业务逻辑解耦了,如果数据库更换,直接更改orm层不就好了。那现在又加了一层Repository,为啥呢?

Repository 是一个独立的层,介于领域层与数据映射层 (数据访问层) 之间。它的存在让领域层感觉不到数据访问层的存在,它提供一个类似集合的接口提供给领域层进行领域对象的访问。Repository 是仓库管理员,领域层需要什么东西只需告诉仓库管理员,由仓库管理员把东西拿给它,并不需要知道东西实际放在哪。(咦,难道DAL\ORM不是这样的吗?)
Repository 模式是架构模式,在设计架构时,才有参考价值;
Repository 模式主要是封装数据查询和存储逻辑;
Repository 模式实际用途:更换、升级 ORM 引擎,不影响业务逻辑;
Repository 模式能提高测试效率,单元测试时,用 Mock 对象代替实际的数据库存取,可以成倍地提高测试用例运行速度。

总结来说,就是让业务逻辑层和数据持久层再次解耦,让业务逻辑层感觉不到持久层的存在,以后如果想更换持久层框架,只需要更改Repository层即可。不需要更改业务逻辑层的代码。
一切都为解耦。

标签:逻辑,持久,Repository,业务,模式,数据
From: https://www.cnblogs.com/charlottepl/p/16708448.html

相关文章

  • 【白话设计模式】课程笔记整理
    白话设计模式六大设计原则开闭原则Open-ClosePrinciple,OCP在⾯向对象编程领域中,开闭原则规定软件中的对象、类、模块和函数对扩展应该是开放的,但对于修改是封闭的。......
  • 第十二章 Redis高可用-哨兵模式(Sentinel)
    一、Sentinel介绍Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都没有实......
  • 《js 设计模式与开发实践》读书笔记 13
     职责链模式的定义是:使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。 ......
  • 《js 设计模式与开发实践》读书笔记 14(完)
    在传统面向对象语言中,给对象添加功能常常使用继承的方式,但是继承的方式并不灵活,还会带来许多问题:一方面会导致超类和子类之间存在强耦合性,当超类改变时,子类也会随之改变;另......
  • 组合模式
    组合模式的核心思想就是:一个组织有很多子组织,而无论子组织是单独一个部门或是一个分组织。该组织都希望把它们当成一样的子组织来管理。对于分组织,只用通知分组织就可以了,......
  • 享元模式
    享元模式享元接口packageflyweighttypeflyWeightinterface{setColor(string)getShape()string}享元角色packageflyweighttypeshapestruct{......
  • 设计模式之备忘录模式
    无论是我们在使用word还是记事本,系统都会为我们提供撤销的功能,这几乎是人人都会使用到的功能,而在我们实际开发中,会不会存在一个很复杂的对象,当更改了其中的某一个属性以后,......
  • cypress无头模式运行,生成测试报告
    1.内置测试报告 npxcypressrun--reporter=spec2.指定运行用例  npxcypressrun--reporter=spec--speccypress\integration\cypress-study\web\page\should_de......
  • 我的设计模式之旅、02 单例模式(第二次更新)
    编程旅途是漫长遥远的,在不同时刻有不同的感悟,本文会一直更新下去。思考总结什么是单例模式单例模式(SingletonPattern)属于创建型模式,它提供了一种创建对象的最佳方式。......
  • 我的设计模式之旅、12 原型模式
    编程旅途是漫长遥远的,在不同时刻有不同的感悟,本文会一直更新下去。思考总结思考问题如果没有原型模式,当我们复制复杂对象,在新建相同类的对象,遍历原始对象中的所有成员变......