一直埋头写代码,很少关心什么模式啊,架构啊,每次面试的时候就被问的晕头转向,了解了一下,其实没啥东西。
MVC模式:Model-View-Controller三层,Model顾名思义就是模型,数据模型,比如一个学生模型,他有学号,姓名,成绩等参数;View就是界面显示表现层,很好理解;Controller就是控制器,处理界面与模型的业务逻辑,比如界面上加载的数据来自一个学生模型的学号,姓名之类的,界面有所改动,控制器里面就要写相应的数据变化处理,有可能是数据库的增删改查。
三层架构:分为表面层,业务逻辑层,数据访问层。表面层就是UI层了,其实跟MVC里的View是一样的;先说下数据访问层,里面一般是封装了一个数据库访问的类,包括连接,增删改查;业务逻辑层就是调用数据访问层,进行业务实现。
看网上说把MVC看作是三层架构里的表面层,我是极为不赞同的。注意看,MVC=表面层+业务逻辑层+Model。三层架构=表面层+业务逻辑层+数据访问层,一般都会再加一个Model的,只是没算在里面。区别在于两个业务逻辑层不一样!如果实现的都是相同的访问数据库操作,那么MVC的业务逻辑层功能就等同于三层架构的业务逻辑层+数据访问层。
两个业务逻辑层,它们之间的区别是什么?那就要从面向对象的特性之一封装开始讲起了,我们要实现某个功能的时候,面向过程的方式是直接实现一个方法,然后调用方法;面向对象的方式是创建一个类,在类里实现方法,然后通过对象调用;现在MVC的业务逻辑层就是面向过程的方式,三层架构的业务逻辑层才是面向对象,数据访问层就是它创建的那个类。
至此,我想MVC和三层架构的区别应该理清了吧。不管什么模式架构,都是人造的,都离不开面向对象的三个特性,把这三个特性吃透了,我相信什么模式架构都是纸老虎,觉得有道理就点赞吧!