在 MVC/OOP 中定义业务逻辑和应用程序逻辑



我正在学习MVC和OOP,但有些事情让我感到困惑:

业务逻辑和应用程序逻辑有什么区别?

查看以下付款和开票系统方案:

客户会收到发票,当他们支付发票时,会通过屏幕上的付款进行确认。用户将他们从客户那里收到的金额输入系统。

现在,应用程序逻辑是否如下(在控制器中):

  • 用户无法输入负数
  • 用户必须仅以整数或 #.# 或 #.## 或 #.## 或##.## 等

业务逻辑(在模型中):

  • 输入的金额不能超过发票上的金额(即到期)
  • 和/或输入的金额不能超过欠款金额,如果部分之前已付款

我的想法正确吗?

通常,您应该将所有业务逻辑(包括用于格式化和验证的业务逻辑)放入模型中。因此,不输入负数是模型而不是控制器的重点。阅读瘦控制器,胖模型,也许还有使用Draper的演示者模式。Ryan Bates最近在Railscasts上报道了相当多的这类内容。可能也很好研究一下。

业务逻辑表示不能违反业务流程的规则。您给出的最后两个示例是业务逻辑,因为这些规则依赖于业务而不是应用程序。

应用程序逻辑是与业务无关的逻辑。例如,确保执行前两个规则,因为它们会违反您列出的后两条规则。

反正我的2美分。

所以是的,你走在正确的轨道上。

最新更新