zoukankan      html  css  js  c++  java
  • 基于基本三层如何降低层之间的耦合度

    版权声明:本文为博主原创文章,未经博主允许不得转载。

    前言:对于一个项目的实现,往往都是,产品需求分析,产品设计,UI设计,数据库设计,后台编码,前端页面,各种测试,发布产品;

    这个产品是我个人利用闲暇时间做着玩,包括网站,以及后台管理系统;额外说一句,前端页面是在网上下的模板,个人对前端不算精通。从产品分析到设计,以及数据库建立还有框架的搭建,我只花了2天时间,当然,这是个小网站,表的设计没有很多只有4-5张;

    废话不多说了!

    整个产品架构采用6层架构,主要目的是减少每层之间的耦合度以及依赖性,方便以后代码的复用和变动

    图中每个箭头的指向代表引用

    解释下这6层的各自作用以及实现的功能:

    Model层:这里没什么好讲的,主要是利用EntityFramework框架和codingfirst直接生成的各个类以及context,但还得自己加一个类,作为之后调用context入口时的唯一性,也就是再写一个单例模式的类

    IDAL层:是对DAL层的抽象,在这里我们定义了每个DAL层的行为规范,这里我们定义了四个,增删改查和分页查询,四个行为规范;为了体现代码质量,尽量避免写重复得代码,我又把这四个行为放到一个IbaseDao<T>,而具体的每个Idal只需继承即可,如图:

    DAL层:数据访问层,对于每张表都有的增删改查的功能,抽出来一个泛型BaseDao<T>在此类中实现上述IbaseDao定义的几个行为,而具体的每个DAO类只需要继承ibaseDao<T>,和其对应IDAL接口类

    Factory层:是BLLDal层进行交互的一个节点,本层采用依据传过来的IDAL接口,通过读取dal程序集,依据idao类型是不是其父类这个特性,找到dao,并返回给bll层;对于直接在BLL层中创建dao相比,耦合度大大的降低依赖性也不是那么重要,对于在后面的维护和复用是不言而喻的;代码下图:

     

    BLL层:说到这个层,其实大家还可以去试一下,多加两个层IBLL,BLLfactory,其作用和上述的IDALfactory层大相径庭,作用也是减少BLLUI层的耦合度和依赖,在原来的三层中,BLL是直接new dal对象调其方法,但在本项目中,是调取Factory层的CreateDAO方法,而且不需要引用dal层,只需引用IDAL,在传过去的类型中我们也只需要把相应的dal的接口idal类型传过去,从而对dal层的依赖减少,代码如下图:

     

    UI层:采用MVC框架搭建,对于数据前后台交互式采用强类型视图,一般是把需要的数据封装到Model中然后再前端操作;

    后言:本来不想发这篇博客的,感觉大家都很懂,没必要,但我相信一定还有觉得这是一篇有用的博客的朋友,其实最开心的事,莫过于能帮助到你!

  • 相关阅读:
    关于 " +new Date " 的个人见解
    利用text插件和css插件优化web应用
    gulp如何自定义插件
    NGINX实现域名跳转
    转:分享两个饼状图在线生成工具
    Windows下根据端口号查找进程并关闭【转载】
    树和二叉树
    学习表——受任于败军之际,奉命于危难之间(2.20--2.26)
    Incremental Method
    374. Guess Number Higher or Lower 简单的二分法运用
  • 原文地址:https://www.cnblogs.com/666qq/p/5799784.html
Copyright © 2011-2022 走看看