我正在构建一个简单的购物车推荐引擎。我想坚持严格的MVC。
到目前为止,模型是:User、Items (非常简单,user具有shopping cart:[]属性,Items包含name、cost、brand等信息)。
我想开始根据用户以前购买的东西向他们推荐。
到目前为止,我有以下几点:
算法应该去哪里?既然它同时涉及到users和items,那么把它放在控制器中有意义吗?
发布于 2016-03-02 18:00:41
算法应该去哪里?
它适用于什么语义概念?在执行此算法的业务上下文中,用户在做什么?
如果用户正在查看一个项的集合,并且该集合用于填充相关项的集合,那么我怀疑该算法在语义上连接到Item,并且可以去那里。
如果用户正在查看描述用户的用户配置文件或其他内容,并且该用户的信息被用于驱动推荐,那么作为User的一部分似乎是明智的。
(考虑到问题中的描述,我倾向于后者。)
它实际上只是一个语义问题。执行此操作时上下文中的聚合根模型是什么?在执行此操作时,正在查看或操作的上下文模型是什么?什么型号的信息驱动这一行动?以此类推等等。
最终,这是一个优先考虑的问题。这是一个如何决定如何建模在此代码中描述的业务域的问题。最重要的是,它可以改变。今天,把它放在User模型上可能是有意义的,明天把它放在Item模型上可能是有意义的,以后可能会为此构建一个不同的模型。也许您从在一个模型上进行这个操作开始,但是在以后的实现中,您发现必须跳过圈才能访问该操作,并且它最终在另一个模型上更有意义。所以你重构它。只要领域建模在语义上是合理的,那么它就是正确的。
把它插在控制器里有意义吗?
我不这么认为,不。控制器确实用于将用户请求路由到业务逻辑。它们不应该包含业务逻辑。模特们应该。(或模型使用的后端服务等)
https://stackoverflow.com/questions/35754572
复制相似问题