在MVC模式中,与其他两个方面相比,控制器是最不可重用的。 现在让我们说我有一个应用程序(比如Ordering Pizza),它可以作为网络应用程序和移动应用程序(比如iPhone)使用。所以在这种情况下,我认为模型(或数据)可以重复使用。该视图可能无法重复使用。
但是关于控制器,可以重用任何东西吗?假设我已经有一个可用的网络应用程序,我是否可以重用移动应用程序的控制器逻辑?另外,“业务逻辑”在MVC中的确切位置和位置是什么?
答案 0 :(得分:6)
控制器调用服务层。服务层使用模型来执行业务逻辑。 Controller永远不会包含业务逻辑。它应该只将工作委托给服务层。我认为服务层是域模型公开的部分,你可以说它是MVC中的“模型”。
那就是说,我不认为MVC框架真的关心控制器是否可重用。重要的部分是模型,不应该更改,因为服务层代码被重用。此外,如果我们正确编写代码,控制器将是一个非常薄的层,重用性不应该是一个问题。
您是否可以从Web应用程序重用移动应用程序的控制器逻辑?我想不是,但你可以使用服务层。我怀疑即使视图可以直接从网络应用到移动应用程序,需求也是如此不同。
如果您对应用程序设计感兴趣并学习如何组织业务逻辑,我建议您查看域驱动设计。