当前位置: 首页 > news >正文

MVC模式学习

MVC设计模式,即Model-View-Controller(模型-视图-控制器),其核心理念是清晰的划分视图(即呈现给用户且用户可以与之交互的界面)和模型(负责应用程序业务逻辑和数据处理的部分)之间的关系

在MVC架构中,视图与模型之间并不直接沟通,所有的数据需要通过控制器,这样的设计使得各个部分都可以独立,便于维护和管理

用户的交互逻辑:

用户点击视图,视图控制器接收点击,然后控制器转递给模型请求处理数据,模型处理完数据后通知控制器,控制器改变视图

接下来详细讲讲每个模块的功能

1. Model

  1. Model负责数据存储与处理的部分,负责存储,操作数据,同时在数据更新的时候通知Controller来更新视图部分内容
  2. 与Controller进行通信
    1. Controller直接访问model的属性和方法来获取更新数据
    2. Model通过委托来把数据变化通知给Controller处理,Controller则通过协议的方法来响应这些变化
    3. 使用通知传值的方法,来让Controller监听特定的通知,并发出相应的操作

2. View

View是它是用户与应用程序进行交互的界面层,负责显示数据和响应用户操作

  1. 展示数据,View根据Controller给它的数据来展示用户界面,它自己不处理这些数据,只呈现
  2. 接受用户的输入,如点击按钮,手势操作等,并把这些事件传给Controller来处理
  3. 与Controller通信
    1. addTarget: action: 常用来接收用户操作,并向指定目标发送一个消息
    2. 委托模式,Controller 通常会作为 View 的委托对象,以便处理 View 的事件
    3. 通知,与上文相同,允许对象发布和观察来进行通信

3. Controller

负责两部分直接的交流,从Model中获取数据,再更新View,Controller 还包含应用程序的业务逻辑和数据处理逻辑

需要注意的是,在oc中,Controller与View高度绑定,难以相互独立,我们的View几乎都是在Controller中创建的

这更容易导致你的Controller即C更加庞大,难以维护和扩展

MVC模式的优点以及可能造成的问题

优点

代码复用:由于MVC之间模块基本独立,耦合性低,增加了代码的复用性。相似的模块可以快速构建相似的场景

易拓展性:当模型,数据与控制器是相分离的时候,改变业务规则就变得很容易,数据的存储可以随意的迁移,因为模型对控制器的接口是不变的,这样界面仍然可以正确的展示,界面UI也是可以任意改变,因为它只关心界面不会影响到其他

可维护性:各个模块之间相互独立,可以快速精准的找到问题所在并进行修改

缺点

由于各部分分离,在写代码之前需要理清楚数据传到了哪,接下来应该做什么操作,使得编写更加复杂

由于Controller承担了过多的任务,很容易导致Controller过于复杂庞大

http://www.dtcms.com/a/360303.html

相关文章:

  • 物种多样性与物种丰富度
  • 制造业生产线连贯性动作识别系统开发
  • 使用 Claude Code 与 Remotion 制作自定义动画视频的完整教程
  • 代码分析之符号执行技术
  • 多人协作开发指南二
  • 简化对齐训练:用明文对比数据SFT替代复杂DPO
  • 8针脚的1.8寸IIC接口的TFT彩屏的八个引脚都需要使用吗?
  • 【编号186】中国劳动统计年鉴(1991-2023)
  • LeetCode 2570.合并两个二维数组
  • 超越关键词:RAG系统如何破解用户查询的“模糊密码”
  • BLE广播与扫描
  • 嵌入式C学习笔记之预编译
  • Redis面试重点-2
  • Coze源码分析-工作空间-项目开发-前端源码
  • 在Windows系统Docker中使用wsl2、容器、windows文件路径三种不同挂载方式的区别和性能差异
  • ceph对象存储-存储池-用户认证
  • @Value注解的底层原理(一)
  • Day18 (前端:JavaScript基础阶段)
  • 数据结构 04(线性:双向链表)
  • Ansible 临时命令与常用模块实操指南
  • Cartographer中的gflag与lua文件
  • 国庆福建霞浦游
  • 阿里云创建自己的博客,部署wordpress
  • Java学习笔记-IO流(更新中...)
  • 嵌入式C学习笔记之链表
  • kkfileview自建cdn引入
  • 解决git push时的错误提示:“error: src refspec master does not match any”
  • 极客学院-从零开始学架构
  • 轻量化注意力+脉冲机制,Transformer在低功耗AI中再度进化
  • CAN数据链路层、网络层(ISO11898、15765)