繁体   English   中英

存储库模式设计

[英]Repository pattern design

我正在将包含控制器的代码重构为存储库设计。

我发现困难的部分,考虑特定域/功能的责任。

我有一个ExchangeController ,它有一个trade方法。 在这种方法中,可以改变一个Shift与另一个移位。

所以我在考虑使用交易方法建立一个ExchangeRepository ,但是我必须检索一个Shift

直接从模型中检索ShiftShift::find($id) ),但是通过调用$shiftRepository->get($shiftId)来封装它不是不好的做法吗?

我开始学习它,但有时很难搞清楚一些事情。 尝试将大多数事物封装到自己的内容中,而不仅仅是为模型进行扩展,这是一种好的做法吗?

我希望它有点清楚,哈哈...

存储库的主要思想是隐藏数据库操作与其他代码。 您不需要为每个模型或每个表都有一个存储库。 这将导致非常严重的后果:无法对数据库执行复杂查询。 你必须将它们分成小的简单的,每个都对着它自己的表。

直接从模型中检索Shift(Shift :: find($ id)),但是通过调用$ shiftRepository-> get($ shiftId)来封装它不是不好的做法吗?

我其实不喜欢称之为“不良做法”。 这完全取决于。

直接在控制器中调用模型收集方法可能看起来更简单,编写速度更快,但随着应用程序复杂性的增加,您将开始遇到麻烦。 例如,尝试使用通过代码溢出的Model::queryMethod()的调用向您的应用程序添加缓存。

因此,作为摘要,我建议您将查询拆分为存储库。 明智地选择存储库。 不要注意表名,而应关注应用程序的域逻辑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM