关于Repository模式

本文转载:http://www.cnblogs.com/dudu/archive/2011/05/25/repository_pattern.html

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

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • C#常用操作类库三(XML操作类)

    跟着阿笨一起玩NET
  • ZPL打印中文信息

      相信各位在实际的项目中,需要开发打条码模块的也会有不少,很多同行肯定也一直觉得斑马打印机很不错,但是ZPL打印中文字符很麻烦。如果购买字体卡,或者通过COD...

    跟着阿笨一起玩NET
  • winform渐变窗口显示/关闭

    跟着阿笨一起玩NET
  • 2020-5-8-repository模式

    今天和大家介绍一下一种特殊的设计模式——仓库模式(repository pattern)

    黄腾霄
  • 领域驱动小节

    在应用层(Application)注入 Repository 服务,在 Repository 中转化 Domain 对象,这种方式简单直接,但是很容易将 Rep...

    乐事
  • 田忌赛马

    题目描述 我国历史上有个著名的故事: 那是在2300年以前。齐国的大将军田忌喜欢赛马。他经常和齐王赛马。他和齐王都有三匹马:常规马,上级马,超级马。一共赛三局,...

    attack
  • 助力全国大学生软件测试大赛 腾讯WeTest探索产学研融合新路径

    ? 导语   11月30日-12月1日,第四届“全国大学生软件测试大赛”总决赛于广东软件科学园正式落下帷幕。   受邀参与此次赛事活动的腾讯,不仅携旗下测试...

    WeTest质量开放平台团队
  • 【投资中的那些坑】三对容易混淆的概念

    思维不清晰最耽误赚钱了。思维不清晰,给人感觉就是粘乎乎的,思维清晰,感觉就很清爽干净。废话不多讲,直接开干。

    凌帅出口
  • Foundation-Host

    酷走天涯
  • XMPP协议

    本文来自FOSDEM 2020 Real Time的演讲,作者是Winfried Tilanus。演讲的主题是XMPP:一种模块化协议。演讲内容主要包括XMPP...

    用户1324186

扫码关注云+社区

领取腾讯云代金券