详谈架构

前言

       在重构机房收费系统后,对于三层架构、设计模式的认识一直在继续。每当看到一点东西时,总是会去和过去对比,看看自己是否哪里的理解有问题。

       最近在看Head First的设计模式。最初接触设计模式,看的是大话设计模式,印象中这是我第一次完整的看完除数学、物理、化学之外的第一本书。最初我认为是大话设计模式这本书深深的吸引着我,可是当我看完Head First设计模式后,我计划用两天看完,事实上如果没有打断,两天看完是毫无压力的。

       看完这本书后,我发现系因为的并不是大话设计模式,也不是Head First,而是设计模式。前人留下的宝贵的经验是那么容易让人着迷。对于这此看Head First设计模式的总结将会慢慢呈现。这篇想说一下MVC分层与三层架构的关系。


问题阐述

       在学习分层之初,米老师说自己找资料学习一下MVC三层架构。于是就自己去查MVC了,查了一些资料看了之后,又看师兄博客,发现自己找的有点出入。他们看的都是三层架构。然后就开始看三层架构的资料,最后把系统重构了。

       当初对MVC有一种畏惧心理,所以一直也没敢亵玩。只是偶尔听到谁说一句,MVC和三层不是一回事、MVC和三层其实目的是一样的等等这样或那样的话,还有人说MVC不是架构,它就是几个设计模式复合使用,还有人说。。。。

       对于别人的意见,我已不想再评论什么,大家自己学习一下,相信你也会有自己的见解。


概念叙述

       三层架构(这里只说经典三层),传统意义上就是UI、BLL、DAL三层。将代码断开,然后放到各自归属的地方去(当然会多出来一些代码)。以达到界面、业务逻辑、数据的解耦。

       MVC,是模型、视图、控制器。视图只负责显示、控制器操纵模型,模型包含了所有的状态、数据和应用逻辑。MVC是一种复合模式,包含观察者、策略、组合。视图是模型的观察者,当模型一发生改变时,视图将随着改变。组合模式是在视图里面用的,用来组织页面结构。策略模式,用在视图和控制器之间。

       下面我贴一下个人见解的代码,在这里的MVC三层,我没有用观察者模式,大家可以查下资料看下是怎么加上去的。


代码详解

       三层:

       详谈架构_第1张图片详谈架构_第2张图片


      MVC:

详谈架构_第3张图片详谈架构_第4张图片


分析与对比

      也许你根据上面的两篇代码还是看不出来MVC与三层架构代码之前的差别。那么我这样说一下看你是否可以理解:

      在Model中,需要做三层中DAL层中需要做的东西,但是业务逻辑也需要在这里实现。而控制器,则是实现视图中需要一个功能时,去Model中调用,在页面中怎么显示,也是控制器控制的。也就是用控制器实现了视图和Model的解耦。所以我感觉Model还可以进行划分,将业务逻辑和数据进行分离,这样就到了我们熟悉的三层架构上了。

      对于三层架构,我个人感觉是将控制器放到了UI层,如果把代码进行一下分离,你能够从UI层看到控制器的影子。

      所以我感觉不管是MVC,还是三层架构,其目的是一直的:解耦。

      如果说MVC是复合模式,而三层是架构的话,我觉得有点牵强。因为三层其实也是利用了设计模式(外观),还有什么模式,可以自己去慢慢发现。所以二者在本质上,其实是一样的。


尾声

      至于多层架构,无非就是在三层架构的基础上,加上接口,再引入设计模式。

      对于设计模式以及架构的学习,还在继续,路漫漫其修远兮,吾将上下而求索。

你可能感兴趣的:(详谈架构)