博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于Repository模式
阅读量:5933 次
发布时间:2019-06-19

本文共 1203 字,大约阅读时间需要 4 分钟。

定义(来自Martin Fowler的《企业应用架构模式》):

Mediates between the domain and data mapping layers using a collection-like interface for accessing domain objects.

个人理解: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能提供什么操 作为核心。

相关英文文章:

  

  

  

  

  

  

    

推荐代码示例:

  

相关博文:

  

  E

转载地址:http://vfctx.baihongyu.com/

你可能感兴趣的文章
Decoding之Json解析
查看>>
Docker 私仓建设 Registry + Portainer
查看>>
修饰符final和static浅析
查看>>
用小猪佩奇说明Javascript的原型和原型链
查看>>
优雅的构建 Android 项目之磁盘缓存(DiskLruCache)
查看>>
天下无难试之HashMap面试刁难大全
查看>>
[MetalKit]11-Ray-tracing-in-a-Swift-playground2射线追踪2
查看>>
蚂蚁金服面试经历-临场发挥
查看>>
消息总线系统高级技术要点深度认知-kafka 商业环境实战
查看>>
Spring Cloud 入门教程 - 搭建配置中心服务
查看>>
46. Permutations
查看>>
为提升应用品质助力,绿标2.0检测项技术详解
查看>>
React as a UI Runtime(五、列表)
查看>>
数据库索引融会贯通
查看>>
五分钟用vue实现一个五星打分效果
查看>>
RocketMQ生产者消息篇
查看>>
第十三课时:递归组件的使用
查看>>
22. Generate Parentheses
查看>>
尝试 Docker + Nginx 部署单页应用
查看>>
30秒的PHP代码片段(3)字符串-String & 函数-Function
查看>>