首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >关于项目中 Repository 层的思考

关于项目中 Repository 层的思考

作者头像
新亮
发布于 2022-01-25 00:49:32
发布于 2022-01-25 00:49:32
1.1K0
举报
文章被收录于专栏:新亮笔记新亮笔记

文章目录:

  • 前言
  • Repository 的定位
  • Repository 的实现
  • Repository 的接口
  • 小结

前言

关于项目中是否需要 Repository 层?这个问题,好像没有肯定的答案,下面是我的思考分享给大家,不喜勿喷。

Repository 的定位

我理解 Repository 是个大仓库,里面可以有 MySQLRedisMongoDB ... 等数据。

维护这一层的开发者,可以称为 仓库管理员 ,当使用者需要查询数据的时候,需要告诉仓库管理员,由仓库管理员拿给他,至于仓库管理员从哪拿的数据,使用者无需关系。

同理,当需要创建或更新数据的时候,也需要告诉仓库管理员,由仓库管理员进行操作数据。

总结:Repository 主要是封装数据的查询、创建、更新、删除等逻辑,供使用者调用。

Repository 的实现

  • 可配置条件查询
  • 可配置数据转换
  • 可配置数据验证

解释下 “可配置数据转换” :当我们需要返回隐私性字段时,例:如手机号,如果使用者无数据权限时,手机号字段中间 4 位需要进行加 * 处理,还有处理返回的时间格式等。

如果你使用的是 Laravel 框架,可以参考下 andersao/l5-repository[1]

Repository 的接口

Repository 层的接口可以理解为契约(可了解下 Laravel Contracts 目录),它是受 Domain 驱动的,Repository 中定义的功能要体现 Domain 的意图和约束。Domain 需要什么我才提供什么,不需要的我不会提供。

例如,接口名可以定义为 searchUsersByIdsearchUsersByName,不可以定义为 searchUsersByInfo,查询的字段也不建议设置为 * ,仅查询需要的字段进行返回。

什么是 Domain?可以理解为领域层。

小结

使用 Repository 层有利有弊,弊端就是有些繁琐,没有 ORM 一把梭的顺畅。当然优点也有很多,主要是后期的可维护性大大提高。

列举一些优点:

  • 更换、升级 ORM 引擎时,不影响业务逻辑;
  • 便于单元测试,可用 Mock 对象代替实际的数据库存取;

以上,希望对你能够有所帮助。

参考资料

[1]andersao/l5-repository: https://github.com/andersao/l5-repository

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 新亮笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
情人节程序员用HTML网页表白【制作浪漫气球520告白相册】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
1 网页简介:基于 HTML+CSS+JavaScript 制作七夕情人节表白网页、生日祝福、七夕告白、 求婚、浪漫爱情3D相册、炫酷代码 ,快来制作一款高端的表白网页送(他/她)浪漫的告白,制作修改简单,可自行更换背景音乐,文字和图片即可使用
IT司马青衫
2022/08/21
6920
情人节程序员用HTML网页表白【制作浪漫气球520告白相册】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
CSS3动画-抛物线运动
今天来说下CSS3动画,目标是让一个方块做抛物线运动。主要用到的CSS3属性有animation,transform,@keyframes,transition等。 ---- Animation版-0 我们先建立一个HTML文件,test.html: <!DOCTYPE html> <html> <head> <link rel="stylesheet" type="text/css" href="animation.css"/> </head> <body> <div class="item"></d
Bob.Chen
2018/05/02
1.8K0
CSS3动画-抛物线运动
【前端入门】掌握好这个小游戏,H5/CSS3基本就通啦
这是一个纯HTML5+CSS3写的一个小游戏。很适合前端初学者哈...。 视频演示: http://mpvideo.qpic.cn/0bc3biaceaaarmadqszqj5rfacwdeifaai
用户5997198
2022/03/28
2760
CSS3 3D旋转立方体 原
主要用到动画css3  animation,特别注意当完成正方体的过程中,每个面旋转时这个面的坐标系是跟着变换的,只是他们的相对位置不变,默认的变换基点是(50% 50% 0),我们可以使用transform-origin改变默认基点,也可以按默认的基点来变换,关于rotateX或者rotateY旋转角度的正负区分,是视线在x轴或者Y轴的+方向向负方向看,如果是顺时针则角度为正值,逆时针为负值,下面是按默认基点实现立方体的。
tianyawhl
2019/04/04
1.3K0
CSS3 3D旋转立方体
                                                                            原
49个常用的CSS代码片段,建议整理收藏
text-shadow 为网页字体添加阴影,通过对text-shadow属性设置相关的属性值。
前端达人
2021/07/16
2.3K0
纯CSS3绘制的逼真,呆萌,超酷的CSS3动画纯CSS3人物行走动画 逼真炫酷CSS3动画纯CSS3绘制的小猫笑脸动画 超呆萌纯CSS3绘制可爱小男孩动画 超酷面部表情
纯CSS3人物行走动画 逼真炫酷CSS3动画 CSS3实在是太强大了,今天分享的CSS3动画非常神奇,它可以模拟人物行走,而且人物行走动画非常逼真。人物行走时的跨步动画时多张图片重叠实现的。有了这个
wblearn
2018/08/27
1.7K0
纯CSS3绘制的逼真,呆萌,超酷的CSS3动画纯CSS3人物行走动画 逼真炫酷CSS3动画纯CSS3绘制的小猫笑脸动画 超呆萌纯CSS3绘制可爱小男孩动画 超酷面部表情
CSS3
http://caniuse.com/ 1、私有前缀及其用法 .round{ -khtml-border-radius: 10px; / Konqueror / -rim-border-radius: 10px; / RIM / -ms-border-radius: 10px; / Microsoft / -o-border-radius: 10px; / Opera / -moz-border-radius: 10px; / Mozilla (如 Firefox) / -webkit-border-radius: 10px; / Webkit (如 Safari 和 Chrome) / border-radius: 10px; / W3C / }
py3study
2020/01/10
7160
一篇文章带你了解CSS3 背景知识
CSS3允许你为一个元素添加多个背景图像, 通过使用 background-image 属性.不同的背景图像用逗号隔开,图像叠加在一起,
前端皮皮
2020/11/26
7070
一篇文章带你了解CSS3 背景知识
CSS3的3D变换和动画
IE10,firefox以及Opera支持@keyframe,而chrome和safari需要加浅醉-webkit-,IE9及早期IE版本是不支持的,所以这些功能一般是在移动端使用.
IMWeb前端团队
2019/12/03
1.4K0
【一起来烧脑】一步学会CSS3体系
background-image属性添加背景图片 background-size指定背景图像的大小 background-origin属性指定了背景图像的位置区域
达达前端
2019/07/19
7930
【一起来烧脑】一步学会CSS3体系
理解CSS3中的background-size(对响应性图片等比例缩放)[通俗易懂]
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说理解CSS3中的background-size(对响应性图片等比例缩放)[通俗易懂],希望能够帮助大家进步!!!
Java架构师必看
2022/02/10
4.1K0
理解CSS3中的background-size(对响应性图片等比例缩放)[通俗易懂]
5个很常用的CSS3网页小实例
由于最近比较忙,自己也没有很充裕的时间可以去做比较丰富的案例。我挤出时间来制作这几个很常用的CSS3网页小效果。
winty
2020/09/22
5020
5个很常用的CSS3网页小实例
CSS3与页面布局学习总结(六)——CSS3新特性(阴影、动画、渐变、变形、伪元素等)
CSS3在CSS2.1的基础上新增加了许多属性,这里选择了较常用的一些功能与大家分享,帮助文档中有很详细的描述,可以在本文的示例中获得帮助文档。 一、阴影 1.1、文字阴影 text-shadow <
张果
2018/01/04
3.4K0
CSS3与页面布局学习总结(六)——CSS3新特性(阴影、动画、渐变、变形、伪元素等)
CSS3实现毛玻璃效果
最近在开发个人博客的时候,在网上学到了一种CSS特效---毛玻璃 感觉还是比较实用下面将这种特效分享给大家。 如下图,我的后台登录界面表单部分就是毛玻璃效果 有时候这种特效很有用,可以达到一种朦胧的效果,接下来我们来看看如何实现它
切图仔
2022/09/08
1.1K0
CSS3实现毛玻璃效果
个人总结(css3新特性)
css3这个相信大家不陌生了,是个非常有趣,神奇的东西!有了css3,js都可以少写很多!我之前也写过关于css3的文章,也封装过css3的一些小动画。个人觉得css3不难,但是很难用得好,用得顺手,最近我也在过一遍css3的一些新特性(不是全部,是我在工作上常用的,或者觉得有用的),以及一些实例,就写了这一篇总结!希望,这篇文章能帮到大家认识css3。写这篇文章主要是让大家能了解css3的一些新特性,以及基础的用法,感觉css3的魅力!如果想要用好css3,这个得靠大家继续努力学习,寻找一些讲得更深入的文章或者书籍了!如果大家有什么其他特性推荐的,欢迎补充!大家一起学习,进步!
守候i
2018/08/22
2.4K0
个人总结(css3新特性)
CSS3旋转实例学习(附3D旋转实例)
我们都有在网页上见过一些交互性的效果,比如用鼠标滑向图标或是按钮的时候,图标会自动旋转一周,这就是CSS3旋转效果。在CSS3中有个常见的transform应用,transform主要包括以下几种:旋转rotate、扭曲skew、缩放scale和移动translate以及矩阵变形matrix。本文主要侧重讲解CSS3的平面旋转(2D)方法和立体旋转(3D)方法。不过既然提起transform,还是先普及一下transform属性的基本知识:
RD.Timon
2020/10/26
3.6K0
CSS3旋转实例学习(附3D旋转实例)
H5C3第一节
CSS3简介 如同人类的的进化一样,CSS3是CSS2的“进化”版本,在CSS2基础上,增强 或新增 了许多特性, 弥补了CSS2的众多不足之处,使得Web开发变得更为高效和便捷。 CSS3的现状 PC端浏览器支持程度差,需要添加私有前缀 移动端支持优于PC端 不断改进中 应用相对广泛 关于私有前缀: 在标准还未确定时,部分浏览器已经根据最初草案实现了部分功能,为了与之后确定下来的标准进行兼容,所以每种浏览器使用了自己的私有前缀与标准进行区分,当标准确立后,各大浏览器将逐步支持不带前缀的css3新属性 目前
用户3461357
2019/08/02
1.1K0
H5C3第一节
css3动画从入门到精通
什么是css3动画? 通过 CSS3,我们能够创建动画,这可以在许多网页中取代动画图片、Flash 动画以及 JavaScript。 CSS3带来了圆角,半透明,阴影,渐变,多背景图等新的特征,轻松实
xiangzhihong
2018/02/05
2.5K0
css3动画从入门到精通
CSS3变形、渐变、动画的基本使用
CSS3 转换可以对元素进行移动、缩放、转动、拉长或拉伸。 转换的效果是让某个元素改变形状,大小和位置。 您可以使用 2D 或 3D 转换来转换您的元素。 2D变换方法: + translate() + rotate() + scale() + skew() 具体的详情描述可以看:菜鸟教程 简单使用代码
不愿意做鱼的小鲸鱼
2022/09/24
1.5K0
CSS3变形、渐变、动画的基本使用
10 个你需要熟悉的 CSS3 属性
CSS 属性被分为不同的类型,如字体属性、文本属性、边框属性、边距属性、布局属性、定位属性、打印属性等。对于初学者来说,需要熟悉并掌握这些属性。前面我们已经了解了30个CSS选择器,但是新的CSS3属性呢?为此小编也特意整理了10个你需要熟悉的CSS3属性,来我们一起了解下吧!
艾编程
2022/12/29
2.5K0
推荐阅读
相关推荐
情人节程序员用HTML网页表白【制作浪漫气球520告白相册】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档