首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC:算法使用多种模型

MVC:算法使用多种模型
EN

Stack Overflow用户
提问于 2016-03-02 17:50:38
回答 1查看 58关注 0票数 0

我正在构建一个简单的购物车推荐引擎。我想坚持严格的MVC。

到目前为止,模型是:UserItems (非常简单,user具有shopping cart:[]属性,Items包含namecostbrand等信息)。

我想开始根据用户以前购买的东西向他们推荐。

到目前为止,我有以下几点:

  • 视图是API接口。
  • 控制器与视图交互,查看输入,并为简单的CRUD请求获取正确的数据。
  • 模型强制执行数据库限制,如索引、唯一性和其他业务逻辑。

算法应该去哪里?既然它同时涉及到usersitems,那么把它放在控制器中有意义吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-02 18:00:41

算法应该去哪里?

它适用于什么语义概念?在执行此算法的业务上下文中,用户在做什么?

如果用户正在查看一个项的集合,并且该集合用于填充相关项的集合,那么我怀疑该算法在语义上连接到Item,并且可以去那里。

如果用户正在查看描述用户的用户配置文件或其他内容,并且该用户的信息被用于驱动推荐,那么作为User的一部分似乎是明智的。

(考虑到问题中的描述,我倾向于后者。)

它实际上只是一个语义问题。执行此操作时上下文中的聚合根模型是什么?在执行此操作时,正在查看或操作的上下文模型是什么?什么型号的信息驱动这一行动?以此类推等等。

最终,这是一个优先考虑的问题。这是一个如何决定如何建模在此代码中描述的业务域的问题。最重要的是,它可以改变。今天,把它放在User模型上可能是有意义的,明天把它放在Item模型上可能是有意义的,以后可能会为此构建一个不同的模型。也许您从在一个模型上进行这个操作开始,但是在以后的实现中,您发现必须跳过圈才能访问该操作,并且它最终在另一个模型上更有意义。所以你重构它。只要领域建模在语义上是合理的,那么它就是正确的。

把它插在控制器里有意义吗?

我不这么认为,不。控制器确实用于将用户请求路由到业务逻辑。它们不应该包含业务逻辑。模特们应该。(或模型使用的后端服务等)

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

https://stackoverflow.com/questions/35754572

复制
相关文章

相似问题

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