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

时间:2012-09-16 08:40:23

标签: php oop model-view-controller

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

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

查看付款和发票系统的以下情况:

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

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

  • 用户无法输入负数
  • 用户必须仅以整数形式输入输入或#。#或#。##或 ##。## etc。

业务逻辑(在模型中):

  • 输入的金额不能超过发票上的金额(即 什么是应该的)
  • 和/或输入的金额不能超过部分欠款 已经付款

我有正确的想法吗?

2 个答案:

答案 0 :(得分:1)

通常,您应该将所有业务逻辑(包括用于格式化和验证的逻辑)放入模型中。因此,不输入负数是模型的焦点,而不是控制器。阅读Skinny Controller, Fat Model和使用Draper的演示者模式。 Ryan Bates最近在Railscasts报道了相当数量的这些东西。也可能很好地研究它。

答案 1 :(得分:0)

业务逻辑意味着不会违反业务流程的规则。您提供的最后两个示例是业务逻辑,因为这些规则取决于业务而非应用程序。

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

反正我2美分。

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