可重用,特定于上下文的模型属性的设计模式

时间:2015-04-07 13:13:23

标签: ruby-on-rails model-view-controller

在复杂的系统中,您可能拥有与您希望在整个系统中重复使用的用户在给定上下文中可以看到的内容相关的业务逻辑。

例如,amazon.com根据一系列不同的规则为不同的用户提供不同的价格。这些价格必须在搜索,产品详细信息页面,电子邮件广告等中一致显示。

如果您尚未找到提取内部服务API的地方,那么这种特定于用户的模型逻辑在Rails风格的MVC中会在哪里?它不属于模型(需要太多上下文),但也不属于Controller(需要在许多控制器中的许多视图中重复使用)。

此类问题的主要设计模式是什么?

1 个答案:

答案 0 :(得分:0)

我想这些复杂的决定应该在你的系统中引入一个ProductService,里面有一些PricePipeline。当系统的任何部分请求产品列表时,传递一些过滤器,ProductService从数据库中提取产品,实例化PricePipeline经理并将带有初始数据库加载价格的产品列表传递给每个成员PricePipeline经理。

显然需要一些缓存,但是......那是另一个问题,不是吗? ;)