我正在学习MVC和OOP,但有些事情让我感到困惑:
业务逻辑和应用程序逻辑有什么区别?
查看以下付款和开票系统方案:
客户会收到发票,当他们支付发票时,会通过屏幕上的付款进行确认。用户将他们从客户那里收到的金额输入系统。
现在,应用程序逻辑是否如下(在控制器中):
- 用户无法输入负数
- 用户必须仅以整数或 #.# 或 #.## 或 #.## 或##.## 等
业务逻辑(在模型中):
- 输入的金额不能超过发票上的金额(即到期)
- 和/或输入的金额不能超过欠款金额,如果部分之前已付款
我的想法正确吗?
通常,您应该将所有业务逻辑(包括用于格式化和验证的业务逻辑)放入模型中。因此,不输入负数是模型而不是控制器的重点。阅读瘦控制器,胖模型,也许还有使用Draper的演示者模式。Ryan Bates最近在Railscasts上报道了相当多的这类内容。可能也很好研究一下。
业务逻辑表示不能违反业务流程的规则。您给出的最后两个示例是业务逻辑,因为这些规则依赖于业务而不是应用程序。
应用程序逻辑是与业务无关的逻辑。例如,确保执行前两个规则,因为它们会违反您列出的后两条规则。
反正我的2美分。
所以是的,你走在正确的轨道上。