我的工作是有不同的页面上目前图表的Web应用程序。每一页对应于一控制器,并且每个需要的图表控制器具有到的ChartService的接口。该服务由第三方供应商要求的图表。然后,它返回在一些HTML使用JavaScript作为字符串直接进入输出流包裹起来的图像。所述的ChartService需要与数据和其他一些参数,如时间段和模板文件来提供。

我是不是应该的图表功能抽象到它自己的控制器?每个不同类型的图表可以通过在ChartController不同的操作方式送达。

不过,这将是一个问题,那么我服了一些来自多个控制器我的网页?什么准则来决定何时功能应该给自己的控制器?

有帮助吗?

解决方案

像你这样的声音不需要改变所有东西。你抽象出来的包装的第三方服务中,使您的控制器不就该项服务直接依赖。创建在这种情况下,一个新的控制器就等于在你的包装制作的包装。

当您要添加行为的应用程序创建一个新的控制器。

其他提示

戴夫,

我有一个抽象basecontroller你的主控制器从继承。主控制器将拥有所有与儿童控制器从而覆盖了适当部位所需要的功能。不知道您的两难困境的全部上下文中,这可能是也可能不是一个可行的(或期望的)的方法,但它是一个我在所有我的控制器的使用目前

[编辑] - 这种做法的好处是,如果你是幸运的,的basecontroller功能的75%,将继续留在只有25%的功能是被覆盖的和/或定制的附加功能该子控制器。这将给你一个非常干净的范例,因为每个新的图表类型将具有它自己的模型/具有潜在的相同动作的方法名称控制器,从而使新的图表类型非常廉价的“条目”的成本。

吉姆

IMO,如果你有一个网址,如

一个“图表”部分
charts/income
charts/expenditure

然后一个图表控制器是有意义的。此外,如果比如你的图表控制器由来自各个页面的ajax查询专门调用,那么chartingController仍然是有意义的。但如果你将不得不像网址

products/list
products/yearlyStockChart
employees/details
employees/performanceChart

然后,你会想用列表()和yearlyStockChart一个ProductsController的()动作,并与细节的employeesController()和performanceChart()动作,既控制利用一个chartingService的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top