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

【笔记-软考】层次式架构-表现层框架设计

Author:赵志乾
Date:2024-07-27
Declaration:All Right Reserved!!!

1. 设计模式

        表现层设计模式主要包括MVC、MVP、MVVM三种,用来分离显示部分和业务处理部分(显示部分发生变化的概率更高,分离后可单独演化);

  • MVC(Model-View-Controller):将应用划分出Model、View、Controller三个模块;主要用于Web框架;
  • MVP(Model-View-Presenter):基于MVC演化而来,其核心理念是由Presenter负责所有交互,避免Model和View间直接交互所产生的耦合;主要用于Adroid开发;
  • MVVM(Model-View-ViewModel):基于MVP演化而来,其核心理念是由ViewModel通过事件监听与数据绑定机制,实现Model和View之间的双向绑定;主要用于数据操作比较频繁的场景;

        设计模式的优点:

  • MVC:易于扩展和维护;允许多种用户界面的扩展;功能强大的用户界面;
  • MVP:模型与视图完全分离,可在不影响模型的情况下修改视图;因交互都发生在Presenter内,可更高效地使用模型;可将一个Presenter用于多个视图而无需修改Presenter的逻辑;逻辑放在Presenter中,可以脱离用户接口进行单元测试;
  • MVVM:能够很好解决UI种类多,接口不断增加等问题;

        Model、View、Controller功能说明:

  • Model:应用的主体部分,表示了业务逻辑和业务数据,可为多个视图提供数据;
  • View:用户看到并与之交互的界面,其向用户展示数据并接收用户的输入数据,但并不负责实际的业务处理;View可以向Model查询业务状态,但不能改变Model,View还可以接收Model发出的数据更新事件,从而对界面进行同步更新;
  • Controller:是View与Model的接口,其一方面接收来自View的输入,并将其解释成系统可理解的对象,同时识别用户动作,将其解释为对Model特定方法的调用;另一方面,其能够处理来自Model的事件和Model逻辑执行的结果,调用适当的视图为用户提供反馈;

2. UIP设计思想

        UIP(User Interface Process)将表现层划分为UIC(User Interface Components)和UIPC(User Interface Process Components)两个子层,其中UIC负责用户数据获取和结果返回,而UIPC用于协调界面的各个部分,使其配合后台的活动;

3. 界面管理技术

        界面管理技术主要包括界面配置、界面定制、界面动态生成三部分;

  • 界面配置:是对用户界面的静态定义,通过读取配置文件的初始值对界面进行配置;
  • 界面定制:运行过程中,用户可按需和使用习惯,对页面元素的属性进行修改,并将这些修改持久化下来;
  • 界面动态生成:在运行时,系统通过DOM API读取界面配置信息并结合用户的定制信息,动态生成界面;

相关文章:

  • 跨域浏览器解决前端跨域问题
  • 构建现代化农业产业服务平台的系统架构
  • Ruby、Python、Java 开发者必备:Codigger之软件项目体检
  • [数据集][目标检测]野猪检测数据集VOC+YOLO格式1000张1类别
  • Spring Security认证授权介绍
  • vue3 使用Mock
  • 【深度学习】yolov8-seg分割训练,拼接图的分割复原
  • 使用 Windows 应用程序 SDK 构建下一代应用程序
  • Godot入门 02玩家1.0版
  • 数据结构【没头单链表】
  • bug诞生记——动态库加载错乱导致程序执行异常
  • 典型二进制翻译系统---用户级翻译
  • NAND Flash 的 SDR、ONFI、DDR 接口
  • deepseek-vl 论文阅读笔记
  • ubuntu在命令行输出里查找内容,dmesg
  • 自己简单写的 事件订阅机制
  • 《深入 React 技术栈》
  • 【391天】每日项目总结系列128(2018.03.03)
  • 【刷算法】求1+2+3+...+n
  • 2017 前端面试准备 - 收藏集 - 掘金
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • Elasticsearch 参考指南(升级前重新索引)
  • HTTP中的ETag在移动客户端的应用
  • IndexedDB
  • java2019面试题北京
  • js 实现textarea输入字数提示
  • js操作时间(持续更新)
  • laravel5.5 视图共享数据
  • React的组件模式
  • SpingCloudBus整合RabbitMQ
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 读懂package.json -- 依赖管理
  • 技术胖1-4季视频复习— (看视频笔记)
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 前端面试题总结
  • 深度学习入门:10门免费线上课程推荐
  • 树莓派 - 使用须知
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 用 Swift 编写面向协议的视图
  • 找一份好的前端工作,起点很重要
  • 阿里云ACE认证之理解CDN技术
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • **python多态
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .gitignore文件忽略的内容不生效问题解决
  • .NET Micro Framework初体验(二)
  • .net wcf memory gates checking failed
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?