今天看视频的李宁项目的视频的时候,突然发现了一个问题,这个问题就是:关于MVC和三层架构 1.是不是一回事?2.有什么区别?3.如何解释这个问题?
MVC阐述:
MVC (Model View Controler)本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。MVC是一种软件设计模式。
MVC与J2EE架构的对应关系是:View处于Web Tier或者说Client Tier,通常是JSP/Servlet,即页面显示部分。Controller也处于Web Tier,通常用Servlet来实现,即页面显示的逻辑部分实现。Model处于Middle Tier,通常用服务端javaBean或者EJB实现,即业务逻辑部分的实现。
MVC关键在于构建Model,Model就是MVC模式的灵魂,它包含了三层架构里的“实体层”,“数据访问层”“业务逻辑层”。Controller用来收集View提供的用户数据,传递给Model,同时返回Model处理后的数据给View。
在三层中也提到了Model,但是三层架构中Model的概念与MVC中Model的概念是不一样的,“三层”中典型的Model层是以实体类构成的,而MVC里,则是由业务逻辑与访问数据组成的。
三层架构是最基本的项目分层结果,而MVC则是三层架构的一个变体,MVC是一种好的开发模式。首先你要明白MVC分别代表的是什么意思.
M 即Model(模型层),主要负责出来业务逻辑以及数据库的交互
V 即View(视图层),主要用于显示数据和提交数据
C 即Controller(控制器),主要是用作捕获请求并控制请求转发
三层阐述:三层架构通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。
三层:UI 界面层 BLL 业务逻辑层,DAL数据访问层,Model 实体层区别:
MVC中的的M 不是三层中的Model(实体层),他其实包括三层中的 BLL,DAL,Model,这是非常要注意的,这也是他们之间的区别的关键所在相同点:
他们相同的设计理念就是:把视图设计与数据持久化进行分离,从而降低耦合性,易于扩展,提高团队开发效率。
学习反思:
感觉自己接触了这么长时间的三层和MVC根本就没有从概念上(本质上)去寻找他们的不同,做了机房收费系统,教务系统和李宁界面系统对这个问题没有引起重视,师弟们问题来还解释的不是很好,为什么当时就不能自己查找一下找到问题的答案哪,为什么自己没有重视这个问题哪,这一系列的问题,我想我自己应该做好反思,遇到知识不能将就,要尽量利用工具找到答案,掌握最根本的灵魂。这才是我们永无止境的追求(仅此一段话作为自己的反思,当做生命中的记录)
交流促进彼此的增长,让知识的理念深入脑海,共同进步......