什么是业务逻辑?

包子
  • 1.2k

对这个概念不是很清楚,还常听到业务逻辑层,那么是个业务逻辑在代码中指的到底是什么呢?

回复
阅读 23k
4 个回答

开玩笑的说,“业务逻辑”就是“不讲逻辑”
比如你开发了一个收款系统,一件商品卖10元钱。有人买了10个就是100元。这个很有逻辑。但是这时候客户说了:“不行,我们搞活动买10个打8折,所以总价是80元”,这就是业务逻辑。
这种逻辑和程序员可以推断的常理来说的逻辑不同,比如,一个商品的价格保存以后,除非有人改动,下次读取应该保持一致,比如不能把一个价格除零。业务逻辑是由客户的需求所决定的。另外经常这种逻辑是容易改动的。
在程序里用专门的模块或者层来处理业务逻辑,可以隔离这种变化对程序其它部分的影响。

业务逻辑就是客户的逻辑@Ke_Wu @酷瓜哥哥 的回答已经很好了,那我就聊聊什么不是业务逻辑

在 N 层架构的系统中,经常会提到这些名词。

  • 表现层(Presentation layer)
  • 业务逻辑层(Application layer)
  • 数据访问层(Data layer)

在一个系统开发过程中,后台做一些处理,如果成功,则跳转到 success_xxx 页面,如果失败,则跳转到 fail_xxx 页面,如果系统抛出了异常,则跳转到 5xx 页面,…… 这些属于页面逻辑

还有一些持久层的逻辑,也就是对数据库的操作。

业务逻辑是核心逻辑,只关注用户的业务,比如管理系统和财务系统,需要处理的业务肯定不一样,但是页面的跳转大致相同,对于持久层的操作也差不多。如果你使用了 SSH 框架,那么 hibernate 和 struts 的代码有很大一部分可以复用。

业务逻辑(BL Action)不关心页面如何跳转,只是简单的返回成功,或是失败,或是异常,struts 框架根据配置文件跳转到相应的页面。

业务逻辑也不关心数据如何存储,是存储在文件系统,还是存储在数据库系统。是存储在MySQL,还是NoSQL。也不关系到底用没用缓存。

如果你正在学用 PHP 开发网站,那么忘掉这些概念吧。如果你使用 Java 的框架开发企业级应用,建议看看 SSH 的源码或者 DEMO。

简单来就是在怎么做事(how to do), 比方说你去餐馆吃饭, 你点了个炒米粉,服务员给你下单,厨房见到单后下锅给你炒,你吃完后付账。这一些列动作都可以说是业务逻辑。

宣传栏