首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >存储库、网关、模型和体系结构问题

存储库、网关、模型和体系结构问题
EN

Software Engineering用户
提问于 2016-02-10 02:45:33
回答 2查看 2.2K关注 0票数 4

我正在与Laravel项目合作,我正在寻找一种方法来解决臃肿的模型和交叉参考他们之间的问题。

我已经开始将更高级别的方法提取到存储库中,但这并不能解决一个方法需要了解另一个方法的问题。

例如,任务查找方法需要首先在另一个表中查找段塞。我不认为我应该将这些代码放置到模型或存储库中,但是我希望有一种方法来实现这种查找。

代码语言:javascript
复制
/Models/Slug
/Models/Task
/Repositories/SlugRepository
/Repositories/TaskRepository

我现在已经开始尝试添加一个具有更高级别方法的网关/服务层,这些方法可以访问两个底层存储库来完成任务。

任务服务将依赖于上面的两个存储库。

代码语言:javascript
复制
/Service/Task
findBySlug()

我认为这是可行的,但我不确定现在是否应该让控制器直接访问存储库,或者强制通过服务/网关层进行所有操作。

或者完全取消存储库,让服务直接访问模型(Laravel抽象数据库访问)。

最重要的是,我想让这件事尽可能简单!

是否有人能确认这种方法是一个好的选择,或者建议另一种方法?

EN

回答 2

Software Engineering用户

发布于 2016-02-16 19:58:27

最后,为了保持简单,我选择了一个任务存储库和一个片段服务。段塞查找需要访问另一个模型,这就是为什么我把它带到服务而不是存储库。

我相信,这种设置保持了正确的分离,因为存储库不需要了解其他模型的任何信息,而且还可以将查找逻辑提取到更易于管理的位置。

票数 1
EN

Software Engineering用户

发布于 2017-09-09 11:13:11

存储库是域层的一部分。它如何实现其目标是在基础设施层。例如,像Task getTask(SlugId id)这样的方法可以完美地放在任务存储库中。现在,存储库的实现可以使用TaskDAO和SlugDAO来工作。

票数 -1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/309720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档