详谈架构

前言

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

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

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


问题阐述

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

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

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


概念叙述

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

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

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


代码详解

       三层:

      


      MVC:


分析与对比

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

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

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

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

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


尾声

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

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值