分层开发的弊端如下:
1) 级联修改问题。一个人事管理系统,本来查看人员信息只能分页查看,而现在,需要增加一个功能:在分页的同时还能分部门。例如:可以查看“销售部的前50个人”,这样,为了实现这个功能所有层都需要修改。
2) 性能问题。本来直来直去的操作,变成层层传递,势必造成性能的下降
1、分离开发人员的关注.由于某一层仅仅调用其相邻下一层所提供的服务,所以,只要本层的API和相邻下一层的API定义完整,开发人员在开发某一层时就可以关注集中于这一层所用的思想、模式、技术,这就等同于将分工带来的生产力提高优势引入了软件开发。
2、无损替换。最常见的就是迁移数据库,比如把数据库由SQL Server换成Oracle,只需要替换数据访问层即可。
3、降低了系统之间的依赖。在程序中,表示层只管调用业务逻辑层的服务,至于业务层下还有几层?各种数据是怎样来的?怎样存的?是真实的数据还是捏造的?都不需要了解,这大大降低了系统各职责之间的依赖。
4、复用。同样的层可以为不同的上层提供服务,达到复用的目的。具体到程序中,例如气象局制作发布了一个 Service Layer,用于提供天气预报信息,这样新浪、搜狐、这些网站就可以利用这个服务层提供的服务,实现天气预报的页面。
分层架构可以降低层内变化的成本,而对于API的变化非常敏感。一个简单的判断法则就是:
如果系统层内频繁变动可能性很大,而API变动可能性很少,就使用分层架构;而如果API可能会频繁变动,那就要谨慎使用分层架构。