一、软件层的特性
软件层有如下特性:
1、每个层由一组相关的类或组件构成,共同完成特定的功能。
2、层与层之间存在自上而下的依赖关系,即上层组件会访问下层的组件API,而下层组件不依赖于上层组件。例如表示
层依赖于业务逻辑层,而业务层依赖于数据层。
3、每个层对上层公开API,但具体的实现细节对外是透明的,当某一层的实现发生变化时,只要API不变,就不会影响到其他层的实现。
总的来讲,软件分层的最基本特征就是层与层之间存在自上而下的依赖关系。
二、软件分层的优点
恰当的进行软件分层,可以提高软件的以下性能:
1、可伸缩性,指应用程序是否能支持更多的用户。
2、可维护性、灵活性,比如当需求发生变化时,只需要修改软件的一部分,不会影响到其他部分的代码,降低了层
与层之间的耦合度。
3、可扩展性,可以很方便的在现有系统中新功能,而层少越少,新增加的功能就越容易破坏现有程序的结构,层数多的话,就可以在第个层中找扩展点。
4、可重用性,可以减少程序代码冗余,每一层都可以多种用途,满足于多种需求,比如,业务逻辑层可以被多种表述层共享。
5、可管理性,程序分层后可以降低系统管理的难易程序,将程序分为多层后,可以将工作分解给不同的开发小组,从而便于管理,系统越复杂、规模越大,分的层数就需越多。
三、软件分层的缺点
软件分层越多,对软件设计人员的要求也就越高,在设计阶段,必须花更多的时间构思合理的体系结构,如考虑如何划
分层、定义每个层的职责;如果在体系结构方面存在缺陷,比如,层与层之间出现自下而上的依赖关系,一旦业务逻辑发生
变化,可能表示层的代码也要修改。
在调试方面,随着层数增加,调试也会越困难,比如我们常用的三层架构,依赖关系都是自上而下的,比如表现层出现
了bug,可能是表现层出现的问题,也有可能是业务逻辑层出现的,也有可能是数据访问层出现的,像这种情况下,我们调
试时就需要将每层的开发人员联合起来,才可能找到bug的原因。
软件分层越多,系统的性能也会有所影响。