《系统架构设计师教程(第2版)》第13章-层次式架构设计理论与实践-02-表现层框架设计

news2024/9/9 1:00:47

文章目录

  • 1. 表现层设计模式
    • 1.1 MVC模式
      • 1.1.1 三个核心模块
        • 1)控制器 (Controller)
        • 2)模型 (Model)
        • 3)视图 (View):
      • 1.1.2 过程
      • 1.1.3 优点
      • 1.1.4 应用
    • 1.2 MVP模式
    • 1.3 MVVM模式
  • 2. 使用XML设计表现层统一Web Form与 Windows Form的外观
  • 3. 表现层中UIP设计思想
    • 3.1 UIP
    • 3.2 分层结构
      • 1)UI
      • 2) UIP
    • 3.3 UIP组件的作用(了解即可)
  • 4. 表现层动态生成设计思想——基于 XML 的界面管理技术

1. 表现层设计模式

1.1 MVC模式

1.1.1 三个核心模块

1)控制器 (Controller)
  • 概述:接受用户的输入,并调用模型和视图去完成用户的需求
  • 作用
    • 它解释来自于视图的输入,将其解释成为系统能够理解的对象
    • 它识别用户动作,并将其解释为对模型特定方法的调用
    • 处理来自于模型的事件和模型逻辑执行的结果,调用适当的视图为用户提供反馈
2)模型 (Model)
  • 概述:
    • 应用程序的主体部分
    • 表示业务数据和业务逻辑
  • 提高了重用性:一个模型能为多个视图提供数据
3)视图 (View):
  • 概念:
    • 用户看到并与之交互的界面
  • 作用
    • 接受用户请求
    • 向用户显示相关的数据
    • 向模型查询业务状态(但不能改变模型)
    • 接受模型发出的数据更新事件,从而对用户界面进行同步更新。

在这里插入图片描述

1.1.2 过程

  • 控制器接收用户的请求,并决定应该调用哪个模型来处理
  • 模型根据用户请求进行相应的业务逻辑处理,并返回数据
  • 控制器调用相应的视图来格式化模型返回的数据,并通过视图呈现给用户

1.1.3 优点

使用 MVC 模式来设计表现层,可以有以下的优点:

  • 允许多种用户界面的扩展

视图与模型没有必然的联系,都是通过控制器发生关系,这样如果要增加新类型的用户界面,只需要改动相应的视图和控制器即可,而模型则无须发生改动。

  • 易于维护

控制器和视图可以随着模型的扩展而进行相应的扩展,只要保持一种公共的接口,控制器和视图的旧版本也可以继续使用。

  • 功能强大的用户界面

用户界面与模型方法调用组合起来,使程序的使用更清晰,可将友好的界面发布给用户。

1.1.4 应用

Web 应用框架

1.2 MVP模式

  • 概念:Model-View-Presenter
    • Model:提供数据
    • View :负责显示
    • Presenter: 负责逻辑的处理
  • 与MVC的区别
    • MVC允许View和 Model 直接进行“交流”,
    • MVP 中 View并不直接使用 Model, 而是通过 Presenter来进行的
  • 优点:
    • MVP避免了View和 Model 之间的耦合
    • 进一步降低了 Presenter对 View的依赖

      Presenter依赖的是一个抽象化的View, 即 View实现的接口 IView

在这里插入图片描述

  • 优点:

    • 模型与视图完全分离,可以修改视图而不影响模型
    • 可以将一个Presenter用于多个视图,而不需要改变Presenter的逻辑
    • 可以更高效地使用模型

      因为所有的交互都发生在Presenter 内部。

    • 单元测试可脱离用户接口,直接测试Presenter

      因为逻辑放在Presenter中

  • 应用:Android 开发当中。

1.3 MVVM模式

在这里插入图片描述

  • 概念
    • Model-View-ViewModel
  • 与MVC、MVP的区别
    • 通过DataBinding实 现View与Model之间的双向绑定
  • 双向绑定原理:ViewModel 实现一个观察者
    • 当数据发生变化, ViewModel 能够监听到数据的变化,然后通知对应的视图做自动更新
    • 而当用户操作视图, ViewModel 能监听到视图的变化,再通知数据做改动
  • 应用:
    • 数据操作特别频繁的场景

2. 使用XML设计表现层统一Web Form与 Windows Form的外观

  • XML概念
    • 可扩展标记语言
    • 用于定义数据本身的结构和数据类型
  • 可以使用XML设计表现层的原因
    • 有人提出,将 GUI用一个标准的形式描述,提供特定形式的转换器,根据GUI 的描述转换成相应的表现形式
    • 这就要求描述语言有非常好的通用性和扩展性,XML 恰恰是这种描述语言理想的载体。

3. 表现层中UIP设计思想

3.1 UIP

  • UIP的概念
    • User Interface Process
    • 微软社区开发Application Block 之一
  • 作用
    • 提供了一个扩展的框架,用于简化用户界面与商业逻辑代码的分离过程
  • 应用:
    • 写复杂的用户界面导航和工作流处理
  • 优点:
    • 能够复用在不同的场景
    • 可以随着应用的增加而进行扩展

3.2 分层结构

使用 UIP框架的应用程序把表现层分为了以下几层:

1)UI

  • 概念
    • User Interface Components
    • 该组件即原来的表现层
  • 作用:负责获取用户的数据并且返回结果

2) UIP

  • 概念:

    • User Interface Process Components
  • 作用:协调用户界面的各部分,使其配合后台的活动

    • 如:例如导航和工作流控制,以及状态和视图的管理

下图展示了.Net的分布式应用程序中的位置。
在这里插入图片描述

3.3 UIP组件的作用(了解即可)

  • 管理经过User Interface Components 的信息流
  • 管理UIP 中各个事件之间的事务
  • 修改用户过程的流程以响应异常
  • 将概念上的用户交互流程从实现或者涉及的设备上分离出来
  • 保持内部的事务关联状态,通常是持有一个或者多个的与用户交互的事务实体
  • 从U I 组件收集数据
  • 执行服务器
  • 跟踪UIP 中的任务过程的管理。

4. 表现层动态生成设计思想——基于 XML 的界面管理技术

  • 思路:
    • 用XML 生成配置文件及界面所需的元数据
    • 按不同需求生成界面元素及软件界面。
  • 优点:灵活
  • 包括:界面配置、界面动态生成、界面定制三部分
    • 界面配置:

      • 对用户界面的静态定义

      通过读取配置文件的初始值对界面配置

    • 界面定制:

      • 对用户界面的动态修改过程

      在软件运行过程中,用户可按需求和使用习惯,对界面元素的属性进行修改。软件运行结束,界面定制的结果被保存。

在这里插入图片描述

  • 意义:
    • 实现了用户界面描述信息与功能实现代码的分离
    • 可针对不同用户需求进行界面配置和定制
    • 能适应一定程度内的数据库结构改动
    • 方便系统移植

    只须对 XML文件稍加修改,即可实现系统的移植


在这里插入图片描述

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

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

相关文章

⚠️ Buffer Overflow: 安全编码必备知识 ️

⚠️ Buffer Overflow: 安全编码必备知识 🛡️ ⚠️ Buffer Overflow: 安全编码必备知识 🛡️摘要引言正文内容一、缓冲区溢出基本概念 🧩二、常见场景及实际案例 🛠️2.1 利用不安全的函数2.2 堆溢出攻击 三、调试技巧 &#x1f…

算法入门:Java实现排序、查找算法

链接:算法入门:Java实现排序、查找算法 (qq.com) 冒泡/选择/插入/希尔排序代码 (qq.com) 快排/归并/堆排/基数排序代码 (qq.com)

Python酷库之旅-第三方库Pandas(053)

目录 一、用法精讲 196、pandas.Series.first方法 196-1、语法 196-2、参数 196-3、功能 196-4、返回值 196-5、说明 196-6、用法 196-6-1、数据准备 196-6-2、代码示例 196-6-3、结果输出 197、pandas.Series.head方法 197-1、语法 197-2、参数 197-3、功能 1…

【C++题解】1069. 字符图形5-星号梯形

问题&#xff1a;1069. 字符图形5-星号梯形 类型&#xff1a;嵌套循环、图形输出 题目描述&#xff1a; 打印字符图形。 输入&#xff1a; 一个整数&#xff08; 0<n<10 &#xff09;。 输出&#xff1a; 一个字符图形。 样例&#xff1a; 输入&#xff1a; 3输…

卷积神经网络(三)---案例分析

上面部分介绍了 PyTorch 中的卷积模块&#xff0c;接下来将会介绍几个卷积神经网络的案例&#xff0c;通过案例入手来介绍卷积神经网络的结构设计。 1. LeNet LeNet 是整个卷积神经网络的开山之作&#xff0c;1998年由 LeCun 提出&#xff0c;它的结构特别简单&#xff0c;我们…

看懂循环队列

循环队列的设计过程 1.循环队列2.设计循环队列的逻辑过程2.1 定义循环队列的数据结构2.2 初始化队列2.3 入队操作2.4. 出队操作2.5 判断队列状态2.5 获取队头和队尾的元素力扣相关题目完整代码 1.循环队列 循环队列是使用有限数组来模拟队列&#xff0c;与普通的队列不同的是&…

文献综述在确定先前研究中使用的方法学方法方面发挥什么作用

VersaBot一键生成文献综述 文献综述在确定先前研究中使用的方法学方法方面发挥着至关重要的作用&#xff0c;可以作为设计自己的方法论并证明其重要性的基础。就是这样; 1. 揭示现有方法&#xff1a; 通过探索与您的主题相关的研究&#xff0c;您将发现其他研究人员采用的不同…

普通人有必要学Python吗?学了之后能做什么?

目录 首先来说一下极其推荐的方向&#xff1a; 1、数据分析 2、科学计算 3、大数据框架 4、脚本开发 5、爬虫 6、Web框架 总结&#xff1a; 如果你还没有开始使用Python&#xff0c;答应我&#xff0c;把这个回答看完&#xff0c;如果你真的学习并深入使用过Python&…

锅总浅析虚拟化技术

常见的虚拟化技术有哪些&#xff1f;KVM集群解决方案有哪些&#xff1f;如何用Libvirt操作KVM组成集群&#xff1f;PVE构建虚拟化的特性和其架构又是怎样的&#xff1f;希望完本文&#xff0c;能帮您解答这些疑惑&#xff01; 一、常见虚拟化技术概述 虚拟化技术是一种通过软…

Qt 实现抽屉效果

1、实现效果和UI设计界面 2、工程目录 3、mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QToolButton> #include <QPushButton> #include <vector> using namespace std;QT_BEGIN_NAMESPACE namespace…

前后端分离开发遵循接口规范-YAPI

目前&#xff0c;网站主流开发方式是前后端分离。因此前后端必须遵循一套统一的规范&#xff0c;才能保证前后端进行正常的数据&#xff08;JSON数据格式&#xff09;请求、影响&#xff0c;这套规范即是 YAPI. 产品经理撰写原型&#xff1b; 前端或后端撰写接口文档。 YAPI…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《计及联盟合作成本的新能源场站共享储能优化配置策略》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

[Spring] MyBatis操作数据库(进阶)

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…

功能性的安全保障:输入校验

前言 在软件开发过程中&#xff0c;确保系统的安全性是至关重要的一环。它不仅关乎保护用户数据的完整性和隐私性&#xff0c;也是维护系统稳定运行的基石。我认为&#xff0c;从宏观角度审视&#xff0c;软件开发的安全性保障主要可分为两大类&#xff1a;功能性的安全性保障…

GitEval — 预测你的 GitHub 个人资料的质量

使用机器学习来预测你是否擅长编码 可直接在橱窗里购买&#xff0c;或者到文末领取优惠后购买&#xff1a; 如果你曾经申请过技术职位&#xff0c;你可能已经向公司发送了你的 GitHub 个人资料链接。此个人资料中的信息可以很好地表明你的编码能力以及是否适合团队。所有这些信…

【全国大学生电子设计竞赛】2024年C题

&#x1f970;&#x1f970;全国大学生电子设计大赛学习资料专栏已开启&#xff0c;限时免费&#xff0c;速速收藏~

Opencv画出红底白字标准中文显示框

链接&#xff1a;https://pan.baidu.com/s/1iEJKpqt-z_5yBJdenUABbA 提取码&#xff1a;uoox 先把这个文件拿了&#xff0c;这个文件是一个ttf的字体&#xff0c;用于显示中文。 核心代码&#x1f451; def cv2AddChineseText(self, img_ori, text, p1, box_color, textColo…

【JavaScript】函数声明和函数表达式的区别

文章目录 一、函数声明1. 定义方式2. 作用域提升&#xff08;Hoisting&#xff09;3. 块级作用域 二、函数表达式1. 定义方式2. 作用域提升&#xff08;Hoisting&#xff09;3. 自引用 三、其他区别1. 函数名2. 可读性和代码组织3. 使用场景 四、总结函数声明函数表达式 在Java…

昇思MindSpore学习入门-自动混合精度

混合精度&#xff08;Mix Precision&#xff09;训练是指在训练时&#xff0c;对神经网络不同的运算采用不同的数值精度的运算策略。在神经网络运算中&#xff0c;部分运算对数值精度不敏感&#xff0c;此时使用较低精度可以达到明显的加速效果&#xff08;如conv、matmul等&am…

Android 10.0 Launcher3仿ios的folder文件夹widget功能实现一

1.前言 在10.0的系统ROM开发中,在进行一些系统Launcher3定制功能开发中,需要实现folder文件夹widget的功能,由于launcher3 默认不支持folder跨行显示,所以就需要借助自定义的widget小部件功能来实现相关功能,接下来分析实现相关功能 2.Launcher3仿ios的folder文件夹widge…