架构(三层架构)、框架(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的建项目

             

             

他俩的共同点就是都分成了三个、折让人们非常easy误解

          并且三层的UI层与MVC的M和C、功能非常像

          而MVC的V和BLL和DLL、功能非常像

          如图


          尽管相似、可是从根本上就不是一个东西呦!由于架构是一种做软件的思想、而框架是人们已经对特定领域软件的共同特性、所编写好的代码成品。


所以

          软件架构>软件框架>设计模式

          当然从解耦和的观点来看、这三个都是以解耦为目的、也是面向对象、做出更好的程序、所以什么一样不一样的、是看在哪个层面看


如:

你买了两个iPhone6手机是一样吗?

          从型号来看、都是苹果6手机、是一样的

          从安装软件上比可能就不一样了


           所以、有人说MVC和三成架构是一个东西、没错、都是为了解耦和、有人说MVC和三层架构不是一个东西、也对、MVC有实际的框架代码、三层架构是做软件的一种思想、就好像设计模式一样、三层是做软件的思想、设计模式是解决这个问题的思想。


           正所谓:横看成岭側成峰、远近高低各不同、事事无绝对、多学多理解、今天写的挺浓缩的、希望能帮到大家、也希望大家看到也能多给我提提建议、谢谢!



———————————————想跟503说再见……———————————————

——————————————chenchen———————————————






转载于:https://www.cnblogs.com/gcczhongduan/p/4362105.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/359103.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

轩逸车联网功能怎么用_北斗已建设完成,那“北斗导航”怎么用?“短报文功能”怎么用?...

6月23号长征三号乙运载火箭将北斗导航系统(BDS)最后一颗卫星,也就是第55颗卫星成功发射升空,这是我国全球导航系统的收官之作,整个导航系统建设耗时20年。中国北斗(BDS)是继美国(GPS)、俄罗斯(GLONASS)第三大成熟的全球定位导航系统&#xff…

nba2k19登陆显示你与服务器,NBA2K19无法登陆了?NBA2K19连不上服务器怎么办?[图]...

NBA2K19是一款很不错的篮球类游戏,喜欢篮球的朋友一定不要错过了!大家都知道这款游戏可以联网也可以单机,但是有朋友反映NBA2K19连不上服务器,这是什么原因呢?NBA2K19连不上服务器:1、卸载其他NBA2K学习版内…

深入进货单-价格跟踪----宇然电脑公司管理软件

细节决定软件是不是一款好的管理软件,也验证软件是否成熟的标致.E2在细节上考虑周到. 在进货时,我们常常会想知道历史的进货过程.在E2下非常简单. 转载于:https://www.cnblogs.com/do_easy/p/4365236.html

转-Android Studio *.jar 与 *.aar 的生成与*.aar导入项目方法

主要讲解Android Studio中生成aar文件以及本地方式使用aar文件的方法。 在Android Studio中对一个自己库进行生成操作时将会同时生成*.jar与*.aar文件。 分别存储位置: *.jar:库/build/intermediates/bundles/debug(release)/classes.jar *.aar&#xff…

【APICloud系列|8】APICloud下载编译包安装,点击图标打不开,提示很抱歉,程序出现异常,即将退出

下载编译包之后,安装在真机上提示很抱歉,程序出现异常,即将退出。进不去这个应用,请问有什么解决办法? 分享一下解决办法:大体分为两个方向: 1.检查新添加的模块。 2.检查config.xml文件(及index.html文件)。 我的问题是这样解决的,下载每个测试包确定出问题的时间…

4阶范德蒙德行列式例题_行列式的性质和计算问题

行列式计算(2) 01 前言 (1)今天我们继续讨论行列式的性质和计算问题。 (2)①第1题: 很多同学在一开始会直接将行列式拆成两个行列式后直接计算, 这是错误的使用了行列式的性质。注意行列式的分拆是“单行单列可拆”, 所以本题如果一直分拆, 应该是2X2X2=8个行列式, 当然此处我们…

diff命令两个服务器文件,linux 比较两个文件夹不同 (diff命令, md5列表)

比较文件夹diff,可以直接使用diff命令[root~]# diff -urNa dir1 dir2-a Treat all files as text and compare them line-by-line, even if they do not seem to be text.-N, --new-fileIn directory comparison, if a file is found in only one directory, treat …

hive分区用2个字段有何限制_Hive分区表和桶表的使用

我们看官网文档中这个地方我们先创建好数据库,以供练习使用数据库我们创建数据表我们创建分区表,选取的字段不能是表中存在的字段元数据信息Formatted信息那我们加载信息load data local inpath /data/hivetest/dept.txt into table dept_partition part…

魔兽三国服务器维护,魔兽三国开服七天技巧

魔兽三国开服七天技巧是9K9K小编星星为大家带来的,开服前七天,是玩家战斗力飙升,最能拉开与别人距离的时候,那么开服七天应该怎么玩呢。开服七天技巧1.抽出第一个英雄,这个看脸哈!通常出的陆逊,步练师&…

使用Docker容器和Java EE进行持续交付

组织需要一种使应用程序交付快速,可预测和安全的方法,而诸如docker之类的容器所提供的敏捷性则可以帮助开发人员实现这一目标。 对于Java EE应用程序,这可以在容器中打包应用程序,应用程序服务器和其他依赖项,这些容器…

MVC小例子

【约定胜于配置】 1. 右键Mode数据层添加新建项,用linq连接数据库 (不要在控制层上直接操控linq,要在数据层新建一个类,来对数据库进行操作) 2. 右键Mode数据层添加类,来完成对数据库的操作.类的名字叫Carda 3. 在Carda类中写对数…

flutter ios打包_Flutter通过BasicMessageChannel与Android iOS 的双向通信

更多文章请查看 flutter从入门 到精通本文章中的完整代码在这里题记:不到最后时刻,千万别轻言放弃,无论结局成功与否,只要你拼博过,尽力过,一切问心无愧。通过 Flutter 来进行移动应用开发,打包…

程序员养家活口接私活必备网站(顺便用技术改变世界)

程序员接私活的原因很多种(挣钱、养家糊口、提升技术等等)。下面整理了一下网站送给最有潜能的你。 提前准备好自己的笔记本和技术呦。 1.码客帮:https://www.make8.com/ 码客帮是一个基于众包的互联网软件技术服务平台,建立项目需求方与技术大牛的连接。帮助需求方快速找到靠…

作为服务器上的操作系统,作为服务器的操作系统

作为服务器的操作系统 内容精选换一换本节介绍如何使用华为云镜像,通过切换镜像部署Windows环境。当您已经购买了弹性云服务器,但想切换成其它类型操作系统,或者想使用镜像重新部署已经预装了其它软件的环境,可以参考本文档的介绍…

怎么判断前轮左右的位置_新手开车技巧,确定前轮位置,准确判断与障碍物距离...

今天我们就来学习下,开车时怎样判断前车轮的位置,还有就是怎样判断前车轮与障碍物的距离。我们先进行右轮的判断,首先认识下雨刷器接点位置,雨刷器接点位置,有一定的宽度。当左侧雨刷器的接点,完全和白色实…

安卓的系统设置 位置服务器,修改安卓定位服务器地址

修改安卓定位服务器地址 内容精选换一换状态代码由三位数字组成,第一个数字定义了响应的类别,有五种可能取值:1xx:指示信息,表示请求已接收,继续处理。2xx:成功,表示请求已被成功接收…

[翻译] ABCIntroView

ABCIntroView ABCIntroView is an easy to use onboarding which allows you to introduce your users to the applicaiton before reaching the Main Screen. ABCIntroView是一个简单易用的引导页。 To use the ABCIntroView please do the following: 你需要遵循以下几步来使…

怎样呵护友谊_【家校联动共同呵护孩子健康成长科普课堂】关爱学生心理健康,守护学生健康成长...

健/康/从/心/开/始小学时期是人的行为、性格和智力迅速发展的关键时期。在这一阶段,由于身心变化比较快,加之文化知识及社会经验的不足,小学生很容易产生不健康的心理,导致心理问题或心理疾病。排除小学生认识、情感、意志等方面的…

中交叉的线_表现力一绝!用交叉线构图拍出来的照片,竟然可以这么吸睛!

不废话,今天为大家介绍一种构图方式:交叉线构图,用这种构图方式拍照,让你的照片表现力一绝!1、什么是交叉线构图交叉线构图指的是,在画面中使用交叉线条进行布局的摄影构图方法。看图——↑红色的木桥形成四…

centos7创建asm磁盘_ASM环境下防止误将数据文件扩容到本地文件系统的方法

前言时常会接到客户或一线工程师反馈oracle数据库报“ora-01110”等错误,本人过往也处理过好几次类似的故障,发现基本上是由于开发人员或初级维护人员在执行数据库表空间扩容时,不小心将本身需要扩容到ASM磁盘组的数据文件扩容到了本地节点上…