乐趣区

关于java:说说软件为什么要分层

背景剖析

在大型软件系统设计时,业务个别会绝对简单,如果所有业务实现的代码都纠缠在一起,会呈现逻辑不清晰、可读性差,保护艰难,改变一处就牵一发而动全身等问题。为了更好解决这个问题就有了咱们当初常说的分层架构设计。

软件分层设计

分层设计的实质其实就是将简单问题简单化,首先基于繁多职责准则 (SRP-Single responsibility principle) 让每个对象各司其职,各尽所能。而后再基于“高内聚,低耦合”的设计思维实现相干层对象之间的交互。这样能够更好进步程序的可维护性和可扩展性,例如生存中的楼宇设计,生日蛋糕设计,企业的组织架构设计等。

通信畛域的 OSI 参考模型

在计算机通信畛域还有典型的 OSI 参考模型(Open System Interconnection Reference Model),TCP/IP 参考模型等,如图所示:

其中,TCP/IP 参考模型是 OSI 参考模型的一种网络简化通信模型,这里不对每一层进行介绍,具体无关 OSI 和 TCP/IP 的常识请自行进行查阅。

互联网畛域的分层架构

基于 Java 的互联网架构,在进行分层设计时,首先要对整体的零碎分层架构有一个根本意识,如图所示:

在上图中,很多公司会依据雇员的技能专长进行相干分工,例如有运维工程师,中间件平台开发工程师,产品开发工程师,测试工程师等。咱们很多高级的 java 程序员次要从事的是产品开发或者是应用软件 (例如客户关系管理系统,分销管理系统,配送管理系统,领取零碎等) 开发,而在应用软件开发时,咱们个别也要进行分层设计,例如典型的 MVC 分层设计,咱们能够参考阿里巴巴开发手册中给出分层设计模型,如图所示:

其中,在上图中的箭头示意一种间接依赖关系,凋谢接口层能够依赖于 Web 层,也能够间接依赖于 Service 层,其它依此类推(具体每层要实现的逻辑可自行查阅阿里巴巴开发手册)。

总结(Summary)

零碎分层设计是一种设计思维,是让每层对象都有一个独立职责,再让多层对象协同(耦合)实现一个残缺的性能。这样做能够更好进步零碎可扩展性, 但同时也会减少零碎整体运维的难度。

退出移动版