架构(三层架构)、框架(MVC)、设计模式三者异同点
前言:
本博客主要针对架构、框架和设计模式三者的区别、还有三层和MVC的区别进行讨论、对于这三者一点都不了解的、请点在维基和百度百科上补补课、这里就不发链接了
软件架构(software architecture)
软件的架构是系统的一个草图、阐述了各个组件之间的通讯、划分层次、一旦系统开始详细设计、架构蓝图就很难甚至无法更改、是由软件架构师从无到有设计出来的。
例: 三层架构:一种设计软件架构的思想
把软件上从逻辑上分为、表示层(UI)业务逻辑层(BLL)数据访问层(DAL)
目的:低耦合、高内聚、各司其职、达到易更换、修改、可以分散部署、编码。
三层架构详解:http://blog.csdn.net/u010191034/article/details/24588675
软件框架(Softwareframework)
软件框架是在一定领域内、别人已经对这个领域制作软件所需的基础架构功能、进行了总结、做出了有代码实体的软件框架结构、如果要制作这一领域的软件、可以在别人写好的框架上、继续设计、编写自己的软件、骨头架上填肉、框架有一定的局限性。
例:MVC(框架)
英文Model View Controller、是针对Web开发、已经写好有代码的框架、分别为M模型(model)-V视图(view)-C控制器(controller)三部分
目的:模型和视图分离开、使得一个模型可被多个视图使用、简单说就是同样的一个网站、用手机的视图(界面)和电脑的视图、可以共用一个模型。
设计模式(Design pattern)
对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案、是一种解决方案的思想、不拘泥于代码、通常以类型或对象来描述其中的关系和相互作用、依赖与抽象、来达到解耦和、可宽展、易维护等、设计模式是用来解决问题的。
三者区别
软件架构是指软件架构师在制作软件的时候、对软件规划的一种蓝图、一般是分层、画出各个组件的关系。
软件框架是指在特定的领域内、已经有人写好的框架(有代码)、框架有局限性、只限特定领域。
设计模式是指针对一些编程实际的问题所提出的抽象解决方案、用类与类之间的关系相互作用、达到目的。
三层架构与MVC的区别
根本区别是三成是机构而MVC是框架、MVC是应用与Web别人已经写好的代码、如ASP.NET就可以直接点击MVC、会自动生成框架代码、而三层是做软件自己划分的、是一种制作软件的思想。
有图有真相、下面是ASP.NET的建项目
他俩的共同点就是都分成了三个、折让人们很容易误解
而且三层的UI层与MVC的M和C、功能很像
而MVC的V和BLL和DLL、功能很像
如图
虽然相似、但是从根本上就不是一个东西呦!因为架构是一种做软件的思想、而框架是人们已经对特定领域软件的共同特性、所编写好的代码成品。
所以
软件架构>软件框架>设计模式
当然从解耦和的观点来看、这三个都是以解耦为目的、也是面向对象、做出更好的程序、所以什么一样不一样的、是看在哪个层面看
如:
你买了两个iPhone6手机是一样吗?
从型号来看、都是苹果6手机、是一样的
从安装软件上比可能就不一样了
所以、有人说MVC和三成架构是一个东西、没错、都是为了解耦和、有人说MVC和三层架构不是一个东西、也对、MVC有实际的框架代码、三层架构是做软件的一种思想、就好像设计模式一样、三层是做软件的思想、设计模式是解决问题的思想。
正所谓:横看成岭侧成峰、远近高低各不同、事事无绝对、多学多理解、今天写的挺浓缩的、希望能帮到大家、也希望大家看到也能多给我提提建议、谢谢!
———————————————想跟503说再见……———————————————
——————————————chenchen———————————————
架构(三层架构)、框架(MVC)、设计模式三者异同点的更多相关文章
- 架构 : 三层架构、MVC、MVP、MVVM
1. 三层架构 将整个业务应用划分为:界面层(User Interface layer, UIL).业务逻辑层(Business Logic Layer, BLL).数据访问层(Data acce ...
- 三层架构和MVC模式
目录[-] 1.三层架构 2.MVC 2.1 标准的MVC(Model-View-Controller) 2.2 Web MVC 3.三层架构和MVC的区别与联系 1.三层架构 三层架构(3-tier ...
- (转)MVC 与三层架构
原文:https://juejin.im/post/5929259b44d90400642194f3 MVC 与三层架构 一.简述 在软件开发中,MVC与三层架构这两个专业词汇经常耳闻,同时总有很多人 ...
- JavaEE三层架构与MVC
JavaEE三层架构与MVC 摘要与总结 等下总结下 MVC模式 Model1 说到设计模式,不得不提一下之前的的Model1.据说早期对于java企业项目的开发,用的是Jsp+JavaBean的 ...
- MVC与三层架构解析学习
概要 MVC与三层架构不是简单的相等,二者之间存在一些区别. 今天,看到一位博主总结笔记,借鉴而来,以供以后学习. 将javaweb开发中的MVC(SSM框架)与三级架构比较,来解析二者之间的关系. ...
- 【JSP】el、jstl、MVC、三层架构
JSP[Java Server Pages] [概念] java服务器页面 简化的servlet设计 html语法中扩展java 跨平台 JSP全名为Java Server Pages,中文名叫jav ...
- JavaEE 三层架构的浅谈
三层架构 三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).区分层次的目的即为了“高内聚,低 ...
- 浅谈C++三层架构
浅谈C++三层架构 三层架构并不是MVC,MVC是一个很早就有的经典的程序设计模式,M-V-C分为三层,M(Model)-V(View)-C(Control). web开发中的三层架构是指:数据访问层 ...
- C# 分层 三层架构
Hello! 三层架构↓↓↓↓↓↓ 三层架构分为:表现层(UI(User Interface)).业务逻辑层(BLL(Business Logic Layer)).数据访问层(DAL(Data Acc ...
随机推荐
- Android中的数据存储(一):SharedPreferences 2017-05-24 10:35 64人阅读 评论(1) 收藏
SharedPreferences 这是本人(菜鸟)学习android数据存储时接触的有关SharedPreferences的知识以及本人自己写的一个简单地demo,为初学者学习和使用SharedPr ...
- 函数调用过程中,函数参数的入栈顺序,why?
C语言函数参数入栈顺序为从右至左.具体原因为:C方式参数入栈顺序(从右至左)的好处就是可以动态变化参数个数.通过栈堆分析可知,自左向右的入栈方式,最前面的参数被压在栈底.除非知道参数个数,否则是无法通 ...
- Tasker 中文版(4.6u2)
http://www.anzhi.com/soft_1868913.html Tasker绝对称得上是Android系统的神器之一,与Auto Memory Manager不同,Tasker不是加速型 ...
- Spark调研笔记第4篇 - PySpark Internals
事实上.有两个名为PySpark的概念.一个是指Sparkclient内置的pyspark脚本.而还有一个是指Spark Python API中的名为pyspark的package. 本文仅仅对第1个 ...
- Go:如何组织代码
备注 此文主要是对官方教程的学习总结,官方教程:http://golang.org/doc/code.html. 工作空间(Workspaces) Go代码必须保持在一个workspace,works ...
- appium+python自动化60-windows上同时启动多个appium服务,让多个android机器并行运行
前言 做android自动化的时候,启动一个appium服务,只能匹配一个手机去自动化执行.有时候想同一套代码,可以在不同的手机上执行,测下app在不同手机上兼容性. 这就需要启动多个appium服务 ...
- IE6BUG汇总篇(不断更新)
1.IE6双倍边距bug 当页面内有多个连续浮动时,如本页的图标列表是采用左浮动,此时设置li的左侧margin值时,在最左侧呈现双倍情况.如外边距设置为10px, 而左侧则呈现出20px,解决它的方 ...
- log4net 使用笔记
一.Log4net特征 1.自定义日志输出级别 Log4net将日志分为五个级别优先级从高到低依次:FATAL > ERROR > WARN > INFO > DEBUG,此外 ...
- SQL CROSS JOIN
最近在讲到T-SQL查询的Join部分时,一下子没有想起来CROSS JOIN的用法,因为其实平常也确实基本不用到.特意找了一个例子,以供参考 CROSS JOIN又称为笛卡尔乘积,实际上是把两个表乘 ...
- http://m.blog.csdn.net/article/details?id=49132747
http://m.blog.csdn.net/article/details?id=49132747