我遇到的情况是,我要在一个控制器中处理搜索逻辑,然后根据搜索生成一些数据并作为统计信息返回。
从另一个控制器调用控制器功能是一种好习惯吗?还是两个控制器不应该“交谈”?
我遇到的情况是,我要在一个控制器中处理搜索逻辑,然后根据搜索生成一些数据并作为统计信息返回。
从另一个控制器调用控制器功能是一种好习惯吗?还是两个控制器不应该“交谈”?
Answers:
尽管答案取决于您使用的语言/框架,但是这很奇怪,因为不同的语言/框架具有不同的MVC方法。
通常,由于以下原因,您不会使用另一个控制器:
控制器通常返回打算由MVC框架使用的类型的结果。此结果包含许多您作为调用者不需要的信息(例如视图的名称),并且并不总是很容易获得您可能感兴趣的信息(在您的情况下,模型,如果我猜对的话)。
控制器不易从业务代码初始化,因为它们通常需要一些有关HTTP请求和上下文的信息。所有这些信息预计将由MVC框架传递。
更重要的是,如果您需要在两个控制器中找到一堆搜索结果,一个控制器向最终用户显示结果,另一个控制器生成统计信息,则只需将搜索逻辑放在您的业务层(首先属于该层),顺便说一句),并保持您的控制器越小越好。
在MVC中,控制器的作用是协调流程:
控制器的作用是不处理业务逻辑。
将代码移到业务层后,您可以提供一个搜索界面,该界面可以以清晰,直接的方式重用,而与另一个控制器所使用的控制器不同。