zoukankan      html  css  js  c++  java
  • 三层架构的困惑:为什么要分出数据访问层

        今日闲来无聊逛起CSDN,看到一贴“三层架构的困惑:为什么要分出数据访问层 ”,本想为楼主释疑,不过自己翻翻看这贴楼已高高,很多高人给出的见解真是经典,自己也不用再抢这点积分了,不过经典当然要收藏了,找来其中LoveCherry、doitnow2000(大海)、winternet(冬天) 三位的回复充充自己的博客:

    LoveCherry(论成败,人生豪迈;大不了,重头再来!^_^) ( ) 信誉:124
    分层式结构究竟其优势何在?Martin Fowler在《Patterns of Enterprise Application Architecture》一书中给出了答案:
    1、开发人员可以只关注整个结构中的其中某一层;
    2、可以很容易的用新的实现来替换原有层次的实现;
    3、可以降低层与层之间的依赖;
    4、有利于标准化;
    5、利于各层逻辑的复用。

    概括来说,分层式设计可以达至如下目的:分散关注、松散耦合、逻辑复用、标准定义。

    一个好的分层式结构,可以使得开发人员的分工更加明确。一旦定义好各层次之间的接口,负责不同逻辑设计的开发人员就可以分散关注,齐头并进。例如UI人员只需考虑用户界面的体验与操作,领域的设计人员可以仅关注业务逻辑的设计,而数据库设计人员也不必为繁琐的用户交互而头疼了。每个开发人员的任务得到了确认,开发进度就可以迅速的提高。

    松散耦合的好处是显而易见的。如果一个系统没有分层,那么各自的逻辑都紧紧纠缠在一起,彼此间相互依赖,谁都是不可替换的。一旦发生改变,则牵一发而动全身,对项目的影响极为严重。降低层与层间的依赖性,既可以良好地保证未来的可扩展,在复用性上也是优势明显。每个功能模块一旦定义好统一的接口,就可以被各个模块所调用,而不用为相同的功能进行重复地开发。

    进行好的分层式结构设计,标准也是必不可少的。只有在一定程度的标准化基础上,这个系统才是可扩展的,可替换的。而层与层之间的通信也必然保证了接口的标准化。

    “金无足赤,人无完人”,分层式结构也不可避免具有一些缺陷:
    1、降低了系统的性能。这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。
    2、有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。

    doitnow2000(大海) ( ) 信誉:100
    刚接触时,觉得分层太麻烦了,看似几行代码的功能却分为业务层、数据访问层...,当初觉得没有必要,但是自从唯护了一个别人写的系统后,(那个系统也没有分层,属于快速开发型的)发现分层极有必要,根据用户需求的变化、自己对软件的理解,我把那个系统用层来分离,现在唯护起来极来方便,

    1、对系统的分层可以理解为对类的设计,我们知道设计的一个好的类,这个类是对它的形为负责,就是这个类应该做什么,不应该什么。分层也一样的,业务层与数据访问层所做负责的任务是不一样的,它们之间的通讯用统一的接口。接口不变,内部实现可以变,(你爱用哪种方法、算法实现都随你)这样层与层的松散就降低了。方便扩展,提高复用
    2、分层会导致性能的降低、级联修改(功能添加时)

    winternet(冬天) ( ) 信誉:100
    做的多了,自然就知道了分层的好处!不懂的,是因为还是没有到达那个境界!好好看书和多实践。

  • 相关阅读:
    P2569 [SCOI2010]股票交易
    P1963 [NOI2009]变换序列
    My thoughts after NOIP 2018(2)
    洛谷 P3159(BZOJ 2668)[CQOI2012]交换棋子
    My thoughts after NOIP 2018(1)
    洛谷【P1523】旅行商的背包(算法导论 15-1) 题解
    洛谷【P2458】[SDOI2006]保安站岗 题解 树上DP
    【BLUESKY的NOIp模拟赛】解题报告
    bzoj4400
    luogu2034
  • 原文地址:https://www.cnblogs.com/jcjks/p/479400.html
Copyright © 2011-2022 走看看