搜索
您的当前位置:首页正文

永不过时的分层架构

来源:知库网

圈里有一句玩笑话,『如果遇到什么新问题,就加一层』。

分层架构在历史中扮演着重要角色,即使在现代,也是非常好用。也有一些声音指出分层架构的问题,提出了一些替代方案。但是……

传统一般意义上说的分层架构,是一种单链层次架构,有严格和不严格之分。严格版本中,某一个层次只能调用其毗邻的下一个层次。而在不严格版本中,某一个层次可以调用其下任意一个层次。

换一个视角看问题。如果我们只谈模块和关注点呢?这个时候,我们的棋盘里可以任意散布着许多棋子,每个棋子代表一个关注点或一个模块。然后,我们为模块添加上依赖关系,从而形成一副有向无环图。有向好理解,为什么要无环?不为什么,我觉得依赖成环是不良设计。而如果在直观情况下产出了成环的模块依赖,只要有心,有很多设计模式可以解决,此处就不展开了。

得到这张图之后,只要对其进行拓扑排序,即可获得一条模块链,而从分层架构的视角来看,这其实就是一个单链不严格层次架构,原来的每一个模块对应一个层次。

如果仅对这张图在空间上按照依赖关系进行重新排布,使得对于一个模块,其依赖的模块始终位于其下方,则可以得到一个多链层次架构。

因此,普通模块化架构和分层架构其实是互通的,只不过分层架构在模块布局上按依赖关系进行了排序,因此更容易直观理解掌控,表达起来也更加规范紧凑,同时也不失模块化架构之能力。

好了,做架构的思路可以简单一些了:找到关注点,找到依赖关系,排序。以后也不用太纠结自己的设计是一个『简单粗暴』的层次架构,综上,它其实一点也不low。

Top