先说下两者出现的目的:
三层是一种为了Project间解除耦合所提出来的简单的分层方式
但MVC其实并不是基于Project的分层方式,而是一种解除展示模板与主要访问控制依赖的设计模式(其实全部都是基于UI的)
【这段楼主可不看:不过有同学说 V是三层的UI,C是三层的BLL,M是三层的DAC,这么说其实不是很对 UI可以认为是 UI=C+V+VIewModel而数据库访问的Model要根据是否是充血模型来判断是否归属于DAC】 再说下两者是基于什么来工作的:
简单说三层至于基于项目,MVC可以基于面向对象关系(即MVC可以在一个项目中,而三层至少要三个项目),而MVC和三层也可以共同使用,本身并不冲突 下面我再说下两者的知识储备(这里说的是理解,而不是使用,使用的话当然可以不求甚解,但我觉得不求甚解的使用方式是对个人不会有提高的,项目做完了,啥也没学到,其实也没意思):
三层:相对来说有简单的面向对象知识,面向接口编程知识即可写出简单的三层
MVC:首先要完全了解面向对象,以及设计模式(因为MVC本身是复合设计模式,所以至少要了解GOF95那些)的知识基础,也要了解面向切面编程以及 各种程序解耦的方式 总结一下:
MVC与三层,共同的地方只有一点,就是看起来都是三个组成部分。但其使用的目的是不一样的,就算使用(MVC -BLL-DAC)这种形式,也是可以的。
如果真正了解MVC的同学,因为有了一定的学习基础,即便不会三层,也可以通过简单学习快速使用三层,因为三层的学习代价并不大。
一切的设计模式都是为了解耦而生,至于为什么需要解耦,就需要了解耦合的所有坏处。 原文地址:http://zhidao.baidu.com/link?url=dZ9W8vjRJvRvzXMaimuoeJnZX-ETDqsUl2S8IsK5dLqlNOmydpCAW43T3OS1iWJ2kH_T6OFVKOX-UMa4MfjaDK

最新文章

  1. java 15 - 6 List的方法
  2. [转]DIV+CSS和TABLE的区别
  3. C\C++拾遗------C#程序员重温C\C++之要点
  4. P3383: [Usaco2004 Open]Cave Cows 4 洞穴里的牛之四
  5. Incorrect string value: '\xF0\xA1\xA1\x92' for column 'herst' at row 1
  6. eclipse颜色配置
  7. POJ3111 K Best
  8. 从汇编看c++内联函数评估求值
  9. php7+apache2.4配置
  10. python之optparse模块
  11. bzoj 2302: [HAOI2011]Problem c
  12. HDU 1069 Monkey and Banana(DP——最大递减子序列)
  13. HBuilder 插件开发(openinstall 集成)
  14. 使用 ASP.NET Core MVC 创建 Web API(一)
  15. MyEclipse 10 报错记录
  16. Mac OS Sierra安装源不能设置任何来源(anywhere)
  17. go语言语法基础
  18. hackbar增强版 & 在Firefox上安装未通过验证的扩展
  19. 关于Java中StringBuffer的capacity问题
  20. TCP之 TIME_WAIT和CLOSE_WAIT 状态 的原因分析和处理

热门文章

  1. shell实践--shell内嵌指令实现查看上线时间
  2. ThinkPHP示例:模板主题
  3. JS: document.getElementBy(), setInerval()
  4. 2016.7.14 generator基于注解和基于xml自动生成代码的区别
  5. lnmp环境网页访问慢排查思路
  6. POJ 开关问题 1830【高斯消元求矩阵的秩】
  7. 《Head First 设计模式》学习笔记——观察者模式 + 装饰者模式
  8. maven打包时无法加载lib下的jar
  9. 一个数组nums,其中任意两个值等于给定值target,返回这两个值在nums里的位置
  10. com.opensymphony.xwork2.ognl.OgnlValueStack - Error setting expression 'customer.applyRate' with value '[Ljava.lang.String;@7d3fae2c'