三层构架和 MVC 不同吗?

关注者
429
被浏览
98,177
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏

做企业应用开发时,经常采用三层架构分层:表示层、业务层、持久层。表示层负责接收用户请求、转发请求、显示数据等;业务层负责组织业务逻辑;持久层负责持久化业务对象。

这三个分层,每一层都有不同的模式,就是架构模式。表示层最常用的架构模式就是MVC。

因此,MVC是三层架构中表示层最常用的架构模式。

参见《企业应用架构模式》-Martin Flower.

=========================================

这话题,其实十年前Java 社区都已经讨论烂了。。。此外,《企业应用架构模式》、《领域驱动设计》、《Pojos in action》、《J2EE 核心模式》等等经典书籍上已经讲的足够清楚了。大师们的书虽说老了点,过时了点,但是是值得精读的,咱能不能别自己随意发明名词。。。。

MVC - 模型、视图、控制器。总有人来个什么模型层、视图层、控制器层,哪里来的这么多层?是不是还要来个Service层、DAO层、DTO 层?

层,英文是tier(物理上)、layer(逻辑上)。既是层,个人理解就有上下关系,模型、视图、控制器有上下关系?否则,依赖倒转原则(高层不依赖于低层,二者都依赖于抽象)指的是啥?

三层架构,每层都有自己的模式,模式就是套路(杨氏太极拳十八式,就是套路),每一层都有自己的套路,就是所谓架构模式。

表示层最常用的套路、模式就是MVC ,MVC就是表示层的一种架构模式。

业务层的架构模式有事务脚本模式、领域模型模式、CQRS 等等(另一种说法是贫血、失血、充血、胀血...)。

持久层的架构模式有入口模式、数据映射器模式等等。

一般来说,框架 > 架构模式> 设计模式 > 设计原则。打个比方,Hibernate是一个持久层框架,是数据映射器模式的具体实现,实现时用到了工厂模式等很多设计模式,体现了什么依赖倒转原则、开闭原则、里氏替换原则等等设计原则。AngularJS是一个客户端 MVC 框架,是 MVC架构模式的一种实现,实现时用到。。。。设计模式,体现了。。。。等设计原则。Struts/ASP.NET MVC是表示层框架。。。。。诸如此类。

嗯,一定有人会说:这些都不重要,写出代码才是王道。一个人一个说法,初学者岂不是无所适从?看看大师们的书总是要安全些。