【问题标题】:Encapsulate Use Cases in a software在软件中封装用例
【发布时间】:2011-01-06 06:55:18
【问题描述】:

我通常为我开发的所有软件编写用例。对于每个用例,我通常编写一个控制器来引导流程(实现一个用例)。

我最近开始使用 Asp.net MVC 开发 Web 应用程序。 Asp.net MVC 的最佳实践之一是在控制器中保留非常少的逻辑。我无法弄清楚我将如何更改我的设计以反映这一点。

我基本上想要一种方法来封装我的用例。

【问题讨论】:

    标签: c# design-patterns ooad


    【解决方案1】:

    我认为拥有胖模型和瘦控制器通常是任何语言的好习惯,而不是专门的 .NET MVC。查看这个漂亮的article,它通过一个示例场景展示了 Ruby on Rails 中胖模式的优势(但这些想法适用于任何语言)。

    为了在代码中表示用例,我认为对它们来说更好的地方是测试用例而不是控制器。

    【讨论】:

      【解决方案2】:

      将尽可能多的业务逻辑推送到您的模型和辅助类,并使用控制器主要用于处理 URL 调用和实例化相关模型、从中检索数据以及将数据推送到视图。视图和控制器应该做出尽可能少的决定。

      【讨论】:

        【解决方案3】:

        创建一个业务组件来封装用例。例如,如果您有一个休假管理系统,您将拥有申请休假、批准休假请求、拒绝休假请求等用例。为此,您可以创建一个名为 Leave Manager 的业务组件(类),其中包含方法(函数/操作),如“应用”、“批准”、“拒绝”等。这些方法将封装您的用例。这些方法会将您的业务实体和数据存储类作为输入并执行用例。

        class LeaveManager{
             int Apply(from, to);
        
             bool Approve(leaveApplicationId, approverId);
        
             bool Reject(leaveApplicationId, approverId);
        }
        

        然后,您可以在控制器中使用此业务组件,通过提供所需的参数来执行用例。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-16
          • 1970-01-01
          相关资源
          最近更新 更多