我们常见的分层架构,
有三层架构的:展现层、业务层、数据层。
也有四层架构的:展现层、业务层、网络层、本地数据层。
这里说三层、四层,跟TCP/IP所谓的五层或者七层不是同一种概念。再具体说就是:你这个架构在逻辑上是几层那就几层,具体每一层叫什么,做什么,没有特定的规范。
这主要是针对模块分类而言的。
也有说MVC架构,MVVM架构的,
这种层次划分,主要是针对数据流动的方向而言的。
在实际情况中,针对数据流动方向做的设计和针对模块分类做的设计是会放在一起的,也就是说,一个MVC架构可以是四层:展现层、业务层、网络层、本地数据层。
那么,为什么我要说这个?
大概在五六年前,业界很流行三层架构这个术语。然后各种文档资料漫天的三层架构,并且喜欢把它与MVC放在一起说,MVC三层架构/三层架构MVC,以至于很多人就会认为三层架构就是MVC,MVC就是三层架构。其实不是的。
三层架构里面其实没有Controller的概念,
而且三层架构描述的侧重点是模块之间的逻辑关系。
MVC有Controller的概念,它描述的侧重点在于数据流动方向。
好,为什么流行起来的是三层架构,而不是四层架构或五层架构?
因为所有的模块角色只会有三种:数据管理者、数据加工者、数据展示者
,意思也就是,笼统说来,软件只会有三层,每一层扮演一个角色。其他的第四层第五层,一般都是这三层里面的其中之一分出来的,最后都能归纳进这三层的某一层中去,所以用三层架构来描述就比较普遍。
那么我们怎么做分层?
应该如何做分层,不是在做架构的时候一开始就考虑的问题。虽然我们要按照自顶向下的设计方式来设计架构,但是一般情况下不适合直接从三层开始。一般都是先确定所有要解决的问题,先确定都有哪些模块,然后再基于这些模块再往下细化设计。然后再把这些列出来的问题和模块做好分类。分类之后不出意外大多数都是三层。如果发现某一层特别庞大,那就可以再拆开来变成四层,变成五层。
转载:http://casatwy.com/iosying-yong-jia-gou-tan-kai-pian.html