zoukankan      html  css  js  c++  java
  • 你的业务逻辑层是否是被架空了?(一)

    问题    

        1. “你的业务逻辑层为什么要按照数据库的表来建立。一旦数据库的表更改了岂不是业务逻辑层也要更改么。”当大师傅问我这个问题的时候,我才反应过来我的业务逻辑层理解的有问题,当时我是把业务逻辑都放到了U层,导致U层很累赘。

        2.当沾沾自喜以为给U层解负担的时候,惊奇的发现,B层还是被架空了。(这个问题是出于B层依然是按照数据库表来建立的。)

        所以,我才重新开始反思 ,业务逻辑层的到底是应该怎么建立,为什么第一次发现这个问题了,还出现业务逻辑层架空的问题。

    原因分析

        

    什么是业务逻辑层?

    • 业务是指一个实体单元向另一个实体单元提供的服务。
    • 逻辑是指根据已有的信息推出合理的结论的规律

       在网上搜索了很多的资料,找了一个解释的蛮有意思的。业务逻辑是指一个实体单元为了向另一个实体单元提供服务,应该具备的规则与流程。就像你家的规矩–“吃饭前必须洗手”“有客人来要起立”“睡觉前各自说晚安”-就是业务逻辑的生活化实例。

    业务逻辑的内容包括四个部分:

    • 领域实体:定义了业务中的对象,对象有属性和行为;
    • 业务规则:定义了需要完成一个动作,必须满足的条件;
    • 数据完整性:某些数据不可少;
    • 工作流:定义了领域实体之间的交互关系。
    下面是假设引用的“以大毛网购裤子”为例的一个例子:
    • 领域实体:大毛、资金账户、订单、裤子、发货单
    • 业务规则:大毛点击购买就会生成订单,但必须付了钱,才会发货,生成发货单。
    • 数据完整性:淘宝网下订单必须登录账号,没有账号就不能成功购买。
    • 工作流:搜索裤子-找到合意裤子-下单购买-付账-收货。

    所以,在大毛网购裤子这一业务逻辑:搜索“裤子”-找到合意裤子-下单-必须登录账号-结算-付账-收货。

        业务逻辑层里到底应该是什么?

         笔者在问了很多大神的博客或者论坛里找到了一个比较好的说法:


        根据上图的解释,我们首先要明确这些业务逻辑的多种关联动作是在B层内部进行的。那么问题就来了,到底怎么内部进行,进行的这些动作到底是什么,方法么,还是类么还是什么其他的?简单的说通过什么方式才能让这多种关联在形成一个完整的流程。这个问题我们后面再说。其次,“即使是不会变成的人也可以设计业务逻辑”。在机房合作期间,由于之前的重构(未完待续)

      



  • 相关阅读:
    基于动态IP的Internet视频监控解决方案(作者:吴晓晖)
    Avid
    Silverlight 自定义控件的继承问题
    VOD三种VOD视频点播技术的简介和比较
    服务器主流存储:SAS存储知识问答
    获取oracle系统数据的sql
    C#去除字符串空格的几种方法
    利用Windows Media实现IP组播
    两种宽带接入方式HFC与ADSL的比较
    C#中用XMLDocument写文件时,去掉XMLNS属性
  • 原文地址:https://www.cnblogs.com/tanqianqian/p/5975052.html
Copyright © 2011-2022 走看看