MVC到底是设计模式还是软件架构?

MVC设计模式 前言 在进行开发时,若没有好的代码架构和设计模式,对整个开发过程造成的影响将是致命的(这亦是当年软件开发初期造成软件危机的原因之一)。如: 新的程序员加入项目时,各个混乱耦合,互相调用的代码模块会增加其学习成本 代码重用率低 代码维护成本高 增加或修改代码时会出现“牵一发而动全身”的窘境 …… 为了解决这一系列问题,先驱者们将工程学的思想引入了软件开发的过程中,在开发时使用设计模式/软件... 阅读详情

前言

昨天在发布MVC的博客后,有位小伙伴私信我,MVC到底是设计模式还是软件架构?这一下子给我问住了,想了很久,终于想通了。在回答这个问题之前,我想我们得明确设计模式和软件架构的概念,顺便介绍一下软件开发中的另一个常见名词——框架

一、软件架构

1.1 概念

软件架构是一个系统的蓝图,它包括多个方面,如系统的结构、行为、用户界面、组件、数据等。软件架构定义了系统的主要组成部分以及这些部分之间的交互。它是在系统设计阶段确定的,并在整个系统的生命周期中起着关键作用。

1.2 作用

软件架构的主要作用是为系统的设计和实现提供一个基础框架。它定义了系统的主要组成部分以及这些部分之间的交互。软件架构可以帮助我们理解系统的高级结构,并可以指导系统的实现和维护。软件架构的抽象级别最高,它关注的是整个系统的大局。

1.3 常见的软件架构(部分)

1.3.1 MVVM(Model-View-ViewModel)

MVVM是一种特别适用于图形用户界面的架构,它将应用程序分为模型、视图和视图模型三个部分。

13.2 微服务架构

在微服务架构中,应用程序被分解为一组小的、独立的服务,每个服务都可以独立地开发和部署。

二、设计模式

2.1 概念

设计模式是在面向对象软件设计中常见的、已经被证明有效的设计解决方案。设计模式可以解决在软件设计中经常出现的特定问题,它们是经验的总结,可以帮助设计者避免一些常见的错误。设计模式通常比软件架构更具体,更低级别,它们通常用于解决在特定上下文中的特定问题。

2.2 作用

设计模式的主要作用是提供解决常见设计问题的模板。设计模式可以帮助我们提高设计的效率和质量。设计模式的抽象级别比软件架构低,它关注的是在特定上下文中的特定问题。

2.3 常见的设计模式(部分)

2.3.1 单例模式

单例模式确保一个类只有一个实例,并提供一个全局访问点。

2.3.2 工厂模式

工厂模式提供了一个创建对象的接口,但允许子类决定实例化哪一个类

三、框架

3.1 概念

框架是一种特殊的软件,它为开发特定类型的应用程序提供了一个基础结构。框架通常包括代码库、工具集和方法,可以帮助开发者更快、更容易地开发软件。框架通常实现了一些特定的设计模式和架构。

3.2 作用

框架的主要作用是为开发特定类型的应用程序提供一个预先定义好的结构。框架可以帮助我们快速开发软件,提高开发的效率。框架的抽象级别比设计模式低,它通常实现了一些特定的设计模式和架构。

3.3 常见的框架(部分)

3.3.1 Spring

Spring是一个开源的Java框架,它提供了一系列的服务,如依赖注入、事务管理、安全性等。

3.3.2 React

React是一个开源的JavaScript库,它主要用于构建用户界面,特别是单页面应用程序。虽然React本身不是一个完整的框架,但它常常被用作开发复杂Web应用程序的基础。


总的来说,软件架构、设计模式和框架的主要区别在于它们的抽象级别和关注点。软件架构关注的是整个系统的结构,设计模式关注的是特定的设计问题,而框架则是为开发特定类型的应用程序提供的工具。

四、理解软件架构、设计模式和框架的区别

举个例子(建造一座房子)

让我们建造一座房子用来作为比喻

软件架构——蓝图

这就像房子的蓝图,它规定了房子的整体结构,包括房间的数量、位置、大小,以及房间之间的连接方式。这个蓝图决定了房子的基本形状和功能。

设计模式——设计解决方案

这就像建房子中的一些常见的设计解决方案,例如,厨房通常会靠近餐厅,卧室通常会有一个靠近的浴室。这些设计模式是根据人们的生活习惯和需求总结出来的,它们可以帮助我们更好地设计房子。

框架——房屋部件

这就像预制的房屋部件,例如预制的墙壁、门窗、楼梯等。这些预制部件已经按照一定的设计模式和架构制造好了,我们只需要将它们组装起来,就可以快速地建造出一座房子。


在这个比喻中,软件架构就像房子的蓝图,它规定了软件的整体结构。设计模式就像建筑行业的设计解决方案,它们可以帮助我们更好地设计软件。而框架就像预制的房屋部件,它们可以帮助我们快速地开发软件。

五、MVC到底是设计模式还是软件架构?

MVC既是一种设计模式,也是一种软件架构。

当我们将MVC视为设计模式时

我们通常关注的是它如何解决特定的设计问题,例如如何将数据和用户界面分离,如何协调用户输入和数据处理等。在这种情况下,MVC是一种解决特定问题的模板或者说是一种设计的最佳实践。

当我们将MVC视为软件架构时

我们通常关注的是它如何定义整个系统的高级结构。在这种情况下,MVC是一种规定了系统主要组成部分以及这些部分之间交互的框架。

拿建房子举例

从软件架构的角度:

MVC就像房子的蓝图。蓝图规定了房子的整体结构,包括房间的数量、位置、大小,以及房间之间的连接方式。在MVC中:

  • 模型(Model)就像房子的基础设施,比如电线、管道和支撑结构。这些都是房子运行的基础,对应于应用程序中处理数据和业务逻辑的部分。
  • 视图(View)就像房子的装饰,比如墙纸、窗帘和家具。这些都是用户可以看到和交互的部分,对应于应用程序中用户界面的部分。
  • 控制器(Controller)就像房子的布线系统,比如开关和电路板。这些都是用户可以操作的部分,对应于应用程序中处理用户输入的部分。

从设计模式的角度:

MVC就像建筑行业中的一些常见的设计解决方案。这些设计模式是根据人们的生活习惯和需求总结出来的,它们可以帮助我们更好地设计房子。在MVC中:

  • 模型(Model)就像设计解决方案中的功能区域,比如厨房、卧室和浴室。这些都是房子的功能部分,对应于应用程序中处理数据和业务逻辑的部分。
  • 视图(View)就像设计解决方案中的布局和装饰,比如墙纸的颜色、家具的摆放和窗帘的样式。这些都是用户可以看到和感受的部分,对应于应用程序中用户界面的部分。
  • 控制器(Controller)就像设计解决方案中的用户交互部分,比如开关的位置、门的开关方式和电器的操作方式。这些都是用户可以操作的部分,对应于应用程序中处理用户输入的部分。

总结:MVC既是设计模式,也是软件架构,这取决于我们从哪个角度来看待它。

好啦,本篇博客就到此为止!希望你看完本篇文章有所收获,祝你变得更强!!!

设计模式与软件架构原理与代码实战案例讲解 1. 背景介绍 在软件开发领域,设计模式和软件架构是两个非常重要的概念。设计模式是指在软件开发过程中,经过实践证明的一些最佳实践和经验总结,可以帮助开发人员更好地解决问题和提高代码质量。而软件架构则是指软件系统的整体结构和组织方式,包括各个模块之间的关系、数据流向、通信方式等等。良好的软件架构可以提高系统的可维护性、可扩展性和可重用性。 阅读详情

相关推荐

产品竞争策略方法论:构建“差异化 + 结构化 + 系统化”的竞争优势

本文系统探讨了IoT产品竞争策略,指出当前企业普遍存在硬件能力强但商业竞争能力不足的问题。文章构建了五层竞争模型(产品层、体验层、服务层、数据层、生态层),提出五大核心竞争策略(成本领先、差异化竞争、聚焦竞争、生态竞争、数据驱动竞争),并详细阐述了差异化设计方法。通过行业案例分析(小米、苹果、特斯拉)和五步落地方法,强调从硬件竞争向系统优势转变的重要性。文章指出IoT竞争胜负关键在后半场的数据运营和服务延伸,建议企业通过构建差异化能力、完善服务体系、建立数据体系、逐步构建生态来避免价格战陷阱,实现从跟随到领

专注智能硬件软硬件产品经理成长与实战,分享从需求定义到量产落地的真实日记。涵盖IoT趋势洞察、研发协作经验、产品方法论与工具箱,用轻松有趣的“汪式”视角,陪伴产品经理成长、避坑与升级。 360

【J2EE】:MVC是框架?是设计模式?是架构?还是……

上篇博客简单聊了聊MVC模式,但是有一个很重要的问题我没有提到,那就是对MVC的定位,它是什么? 很多人都知道MVC,都知道就是把将数据和显示分离,知道Model—View—Controller,但是让你说MVC是什么东西,你可能不知如何回答。那么MVC到底是什么玩意呢?框架?设计模式?架构?都不是。 可以肯定的说(个人认为),MVC不是框架,不是设计模式,更不是架构,它仅仅是

爱技术 爱生活 7195

Ferry工单平台部署

ferry工单平台部署

运维求生之路 1897

SpringMVC执行原理

标题SpringMVC执行原理 图为SpringMVC的一个较完整的流程图,实线表示SpringMVC框架提供的技术,不需要开发者实现,虚线表示需要开发者实现。 简要分析执行流程 1.DispatcherServlet表示前置控制器,是整个SpringMVC的控制中心。用户发出请求,DispatcherServlet接收请求并拦截请求。 我们假设请求的url为 : http://localhos...

Gosions的博客 666

SAP批量数据导入实战:BDC、CATT、LSMW三大工具保姆级对比教程

本文深入对比了SAP系统中三大批量数据导入工具BDC、CATT和LSMW的核心定位、适用场景与实战操作。BDC适合复杂逻辑的编程式处理,CATT适合业务用户快速录制回放,LSMW则是数据迁移项目的结构化首选。文章提供了详细的选型决策框架、性能优化技巧及常见陷阱规避指南,帮助SAP顾问和开发者高效完成数据批量维护任务。

weixin_29213525的博客 153

Linux中Hadoop 集群搭建

零、下载Hadoop: http://archive.cloudera.com/cdh5/cdh/5/?tdsourcetag=s_pctim_aiomsg 一、集群规划: 搭建的 hadoop 集群由 3 台服务器组成,分别叫做 master,salve1 和 slave2。其中 master 作为主节点,slave1 和 slave2 作为从节点。 二、网络配置: 1.查看 3 个节点的主机名...

白墨的小白博客 3992

关于MVC到底是设计模式还是框架又或者是架构模式的新看法

关于MVC到底是设计模式还是框架又或者是架构模式的新看法

Whalefrat的博客 3856

Visual Studio 2022 社区版安装指南:从下载到配置的完整流程

本文详细介绍了Visual Studio 2022社区版的完整安装与配置流程,包括系统要求检查、官方下载步骤、工作负载选择、安装位置配置等关键环节。作为微软推出的免费集成开发环境,VS2022社区版支持多种编程语言,适合个人开发者和小型团队使用。文章还提供了常见问题解决和性能优化技巧,帮助用户高效完成开发环境搭建。

weixin_28829339的博客 882

MVC是架构模式,而不是设计模式

最早学编程的时候看过一些书,印象深刻的一本书《设计模式解析》,那本书给我后来的工作提供了很大的帮助。 他叫我站在问题模型的立场上指定解决方法,也教会了我软件设计中每个问题都可以细化到到不可再分割的原子性。 在那书以后看到过一些设计模式的书出现。由于本人比较崇尚于权威或者说正统性的学术性书籍,没怎么看其他本书。 最近一些年在网上看到过一些博客中把MVC说成设计模式,这个说法是错误的...

weixin_30954265的博客 193

PS2硬盘启动终极指南:从FMCB到OPL,告别光驱打造游戏博物馆

在计算机存储与数据读取领域,硬盘启动技术通过将操作系统或应用程序从本地硬盘直接加载,绕过了传统光驱等外部介质,实现了速度与可靠性的双重提升。其核心原理在于利用引导程序接管系统初始化流程,直接访问硬盘上的特定分区与文件镜像。这项技术的价值在于极大提升了数据读取效率、降低了物理介质损耗,并扩展了存储容量与管理的灵活性。在怀旧游戏硬件改造、嵌入式系统定制等场景中,硬盘启动技术被广泛应用,以实现老旧设备的功能焕新与性能优化。本文聚焦于索尼PS2游戏主机的硬盘启动方案,深入探讨了如何利用FMCB(Free MCBoo

weixin_34295316的博客 1778

基于simulink的多能源系统协同与能源互联网的电网系统场景实例:虚拟电厂(VPP)中电网与储能集群的协同控制

本文详细介绍了使用Simulink构建虚拟电厂(VPP)与储能集群协同控制系统的完整建模过程。主要内容包括:1) VPP系统架构设计;2)分步骤建模过程,涵盖虚拟电厂系统创建、储能单元与集群建模、VPP控制器设计(核心)以及协同控制场景仿真;3)性能分析与典型应用场景。通过混合整数线性规划优化调度和智能指令分解策略,实现了VPP参与电力市场交易、电网调频调峰等功能,验证了系统在提升可再生能源消纳率(96%)、降低电网峰谷差(35%)等方面的优异性能。该建模方法为能源互联网中的分布式资源聚合与协同控制提供了实

xiaoheshang_123的博客 471

MVC 设计模式概述

(尊重劳动成果,转载请注明出处:http://blog.youkuaiyun.com/qq_25827845/article/details/53292312)1、MVC设计模式: 如图所示,MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。MVC模式最早为Trygv...

weixin_34128501的博客 1371

AUTOSAR知识点 之 XCP (三):XCP功能描述

记录一下XCP使用时候的功能包含命令时序、错误码表、事件描述以及对规范的记录。XCP的图示如下从上图就可以看出数据流的流向CAN-CANIF-XCP,发送反之。XCP的状态机如下。

梦想技术家 3077

MVC:一种设计模式而非软件架构

然而,重要的是要理解MVC是一种设计模式,而不是整个软件的架构。软件架构关注的是系统的全局结构和设计原则,以及如何将系统分解为可管理的部分,并定义这些部分之间的交互方式。软件架构是一个更广泛的概念,它涉及整个软件系统的结构和设计,包括系统的各个组件、组件之间的关系以及系统的整体行为。:作为模型和视图之间的中介,负责接收用户的输入,并调用相应的模型处理数据,然后更新视图。MVC设计模式的核心思想是将数据和数据的展示分离开来,使得数据的处理逻辑和用户界面的变化可以独立演进,互不干扰。

程序猿视角 587

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

软件架构设计模式之 MVC-MVP-MVVM

题意描述: 什么是 MVVM?与 MVC 有什么区别?什么又是 MVP ? 解题思路: Alice: 什么是 MVVM MVC 什么又是 MVP 呢? Bob: 我知道 MVVM 分别是指 Model(数据), View(视图),ViewModel(VM); MVC 分别是 Model (数据), View(视图), Controller(控制器);MVP 分别是 Model(数据),Vie...

花花生的博客 795

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【设计模式 MVC模式:软件架构的经典设计范式】

MVC模式是经典的软件架构设计范式,将应用分为模型(数据/逻辑)、视图(界面)和控制器(交互)三个独立组件。模型管理数据并通知视图,视图展示数据,控制器处理用户输入。这种分离使代码更易维护、扩展和测试,支持Web/桌面/移动等多平台开发。MVC衍生出MVP、MVVM等变体,适用于不同场景。最佳实践包括保持瘦控制器、无状态视图和独立模型,采用观察者模式实现解耦。自1979年提出以来,MVC已成为最持久、广泛应用的软件架构模式之一。

一起学习进步! 1332

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

MVC软件架构模式和27种经典设计模式之间的关系

参考资料: 【1】为什么MVC不是一种设计模式? 转载于:https://www.cnblogs.com/lxrm/p/6120817.html

weixin_34232363的博客 242

【软件架构设计模式】MVC、MVP、MVVM辨析

一种将数据、界面和控制逻辑分离的架构模式。从 MVC 演化而来的架构,强调 Presenter 统一控制逻辑。适合现代前端框架的一种架构,强调双向数据绑定。

2402_85491806的博客 1298

《大话代码架构(.Net&&C#)》(Yanlz+VR云游戏+Unity+SteamVR+云技术+5G+AI+软件架构设计+框架编程+数据结构+设计模式+MVC+ORM+架构师+立钻哥哥+=)

《大话代码架构(.Net&&C#)》 版本 作者 参与者 完成日期 备注 YanlzFramework_.Net_V01_1.0 严立钻 2020.02.11 ...

VRunSoftYanlz的博客 3550

软件架构和设计模式

软件架构和设计模式                                      摘要本文主要介绍软件架构、模式以及框架等的概念,着重介绍了MVC架构模式,还有Facade设计模式。对MVC模式的概念和模式扩展作了详细介绍,对F

antony0203的专栏 1699

03-设计模式与软件架构

设计模式

蚂蚁博客 1689

软件架构/ 框架 /设计/模式以及MVC是设计模式还是架构模式

这几个词语是翻译词,必然就有交集更多的是一种感觉和思想,没必要太过于经纬分明,但敲代码老喜欢单出口。。。今天突然想MVC  到底是模式?架构还?还是框架?所以一直查呀查,发现各种说法都有大概用English才能说的清楚吧,各种迷茫。 blog和论坛有几种比较好的说法如下: 软件架构:(software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计

TheNewSky的专栏 1398

随想录(谈谈软件架构)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】    最近很少写blog,主要是因为自己一直在看麦子学院的东西,学习的时间偏多一些。麦子学院是一个网上视频学习网站,讲述的主要是it开发的相关内容,有兴趣的同学可以关注一下。另外一个我自己也觉得不错的网站是极客学院。当然这些都是题外话了。    前几天,正好有一位前同事问我,怎么学些软件架构这些

嵌入式-老费,一个分享专业嵌入式知识的blog 6700

MVC、MVP、MVI、MVVM 和 VIPER 设计模式

在过去的几年里,出现了几种新的模式,所有这些都使开发人员的生活变得前所未有的轻松。通过分离代码库的某些部分,这些模式中的每一个都试图使代码更具可读性,更易于测试,并最终更易于维护

尼古拉斯的AI笔记 1801
上一篇: 自定义MVC工作原理
下一篇: 自定义MVC的初步实现
许潜行
博客等级 码龄4年 303粉丝 75原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值