架构(三层架构)、框架(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,一经查实,立即删除!

相关文章

微信提交表单到服务器,微信小程序页面表单如何跟图片一起上传服务器

拆开写。表单提交是 wx.request上传图片是 wx.uploadFile你需要写一个通用图片上传接口,上传图片后台返回图片的url。这个通用接口在任何需要提交图片的表单都可以用到。添加图片的时候就调用图片上传接口,拿到图片的url,存在表单数据里。提交…

前端汉字encode_js编码转码中文

javascript汉字编码与转码:js编码转码function strTrim(str) {str str.replace(/(^\s*)|(\s*$)/g, "");return str;}function proc_encode(str) {str strTrim(str);return escape(str).replace(/\%/g,\\);}function proc_unencode(str) {str strTrim(s…

ios - Parse Issues in NSObjCRuntime, NSZone, and NSObject

在 XCode6 中使用了 C 文件,run 的时候报这个错误,把 .c 文件的后缀改为 .m 就可以了。不知道为什么。 转载于:https://www.cnblogs.com/1oo1/p/4364859.html

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

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

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

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

【APICloud系列|7】开发一个APP完整流程及注意事项

APP开发流程其实并不复杂(想节约时间可以参考低代码开发相关的平台APICloud、Appcan、千牛云等),但是对于客户来说。一般移动APP开发都离不开UI设计师、前端开发、后端开发、测试专员、产品经理等, 由于工作性质不一样,我们把APP软件开发项目分为4个阶段: 一、功能需求阶…

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

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

a标签 vue 动态点击_vue基础那点事

vue-day011.vue的介绍作者介绍 框架的介绍2.vue官网https://cn.vuejs.org/3.vue的优点易用&#xff0c;灵活&#xff0c;高效4.库与框架区别库&#xff1a;只具有某一种功能框架&#xff1a;具备完整的功能 bootstrap element-ui5.开发环境与生产环境开发环境地址:<scri…

线程与并发介绍

本文是我们学院课程中名为Java Concurrency Essentials的一部分 。 在本课程中&#xff0c;您将深入探讨并发的魔力。 将向您介绍并发和并发代码的基础知识&#xff0c;并学习诸如原子性&#xff0c;同步和线程安全之类的概念。 在这里查看 &#xff01; 目录 1.有关线程的基…

ajax跨域请求(cors实现),ajax跨域请求(CORS实现)

场景&#xff1a;目前有项目A(基于servlet的WEB项目)&#xff0c;和项目B(基于spring boot的WEB项目)&#xff0c;使用同一CAS提供单点登陆&#xff0c;如今须要两个项目互相调用接口数据&#xff0c;因此涉及到ajax的跨域请求java调研&#xff1a;通过调研发现目前的ajax跨域解…

百度贴吧排名计算方式

排名模拟公式:历史帖子数a+新增帖子数b+∑(单一帖子浏览量该帖回复总数)c+独立ip数d=总人气值 其中,a、b、c、d为系数,如果系数为1,则1;(单一帖子浏览量该帖回复总数)这个比率只有在百度认可的一个范围,譬如说5-8之间才能得到加分,有些贴吧每日新增的帖子数表面…

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

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

sprutcam 多机器人_Sprutcam工业机器人离线编程系统

SprutCAM机器人离线编程软件简介1.软件基于Windows风格&#xff0c;中文界面&#xff0c;易学易用&#xff0c;很快可以上手并投入实际工作。2.SprutCAM是一个能独立工作的系统&#xff0c;并非插件,不需要依托任何其他的软件即可独立运行。3.SprutCAM能对6轴工业机器人进行编程…

手机 服务器 推送消息推送消息,推送信息到手机的pushover使用方法及sample code

今天给大家介绍一个好东西&#xff0c;用了两年多了&#xff0c;一直没时间给大家推荐。pushover&#xff0c;移动端的信息推送服务API&#xff0c;包括使用、设置以及API实现。用途在关键节点放上推送(比如用户注册、举报、评论&#xff0c;系统检测等)&#xff0c;当节点触发…

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

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

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

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

HDU 4508

祼的完全背包问题 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #define LL __int64 using namespace std;LL dp[100005]; struct Food{int a,b; }fd[105];int main(){int n,m;while(scanf("%d",&n)…

java不想出差_您不想错过的十大Java书籍

java不想出差我们通过阅读书籍并进行实验来学习。 因此&#xff0c;必须选择最佳的可用选项。 在本文中&#xff0c;我想与一些书分享我的经验&#xff0c;以及它们如何帮助您发展成为Java开发人员。 让我们从头开始&#xff0c;对于任何Java学生来说&#xff0c;前三本书都是一…

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

比较文件夹diff&#xff0c;可以直接使用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 …

各大银行对应的字段(仅做参考)

字符型银行编码银行名称 ICBC_DEBIT 工商银行&#xff08;借记卡&#xff09; ICBC_CREDIT 工商银行&#xff08;信用卡&#xff09; ABC_DEBIT 农业银行&#xff08;借记卡&#xff09; ABC_CREDIT 农业银行&#xff08;信用卡&#xff09; PSBC_CREDIT 邮储银行&…