使用存储库模式时的传统 类

Traditional Classes when using the Repository Pattern

我已经与 laravel 一起工作了几年。我的传统方法是在 app 下有一个 class 文件夹,并将我的数据访问函数放在 classes 中。保持控制器清洁,利用 classes 完成肮脏的工作。

最近一位同事发现了 Repositories,我一直在阅读它们并感到困惑。

使用存储库,我的 app/class/ 文件夹和 "traditional" class 是否还有位置?有可能保持健康的平衡吗?当涉及到存储库设计模式时,是否有理由全力以赴?

最佳实践对此有何说明?

谢谢

设计模式的想法是将持久性逻辑(与数据库 and/or 缓存接口)与域模型分开。

基本上,对对象 "in memory" 所做的任何更改都应保留在 "traditional" class 中。存储库将从数据库中获取或更改数据,但是如果有任何涉及操作数据的业务逻辑不涉及对数据库的更改(无论是格式化数据还是对其执行一些数学运算),您可以将其保存在域 class.

最佳实践(特别是单一职责原则)鼓励将存储库或数据映射逻辑与可以用对象数据封装的业务逻辑分离。