我通常为我开发的所有软件编写用例。对于每个用例,我通常编写一个控制器来引导流程(实现一个用例)。
我最近开始使用 Asp.net MVC 开发 Web 应用程序。Asp.net MVC 的最佳实践之一是在控制器中保留非常少的逻辑。我无法弄清楚我将如何改变我的设计来反映这一点。
我基本上想要一种封装我的用例的方法。
我通常为我开发的所有软件编写用例。对于每个用例,我通常编写一个控制器来引导流程(实现一个用例)。
我最近开始使用 Asp.net MVC 开发 Web 应用程序。Asp.net MVC 的最佳实践之一是在控制器中保留非常少的逻辑。我无法弄清楚我将如何改变我的设计来反映这一点。
我基本上想要一种封装我的用例的方法。
将尽可能多的业务逻辑推送到您的模型和辅助类,并使用控制器主要用于处理 URL 调用和实例化相关模型、从它们中检索数据以及将数据推送到视图。视图和控制器应该做出尽可能少的决定。
我认为拥有胖模型和瘦控制器通常是任何语言的好习惯,而不是特别是 .NET MVC。查看这篇精彩的文章,它通过一个示例场景展示了 Ruby on Rails 中胖模式的优势(但这些想法适用于任何语言)。
为了在代码中表示用例,我认为对它们来说更好的地方是在测试用例中而不是在控制器中。
创建一个业务组件来封装用例。例如,如果您有一个休假管理系统,您将拥有申请休假、批准休假请求、拒绝休假请求等用例。为此,您可以创建一个名为 Leave Manager 的业务组件(类),其中包含方法(函数/操作),如“应用”、“批准”、“拒绝”等。这些方法将封装您的用例。这些方法会将您的业务实体和数据存储类作为输入并执行用例。
class LeaveManager{
int Apply(from, to);
bool Approve(leaveApplicationId, approverId);
bool Reject(leaveApplicationId, approverId);
}
然后,您可以在控制器中使用此业务组件,通过提供所需的参数来执行用例。