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

一.表现层设计模式

1.MVC模式

MVC是一种目前广泛流行的软件设计模式。MVC强制性地把一个应用的输入、处理、输出流程按照视图、控制、模型的方式进行分离,形成了控制器,模型、视图三个核心模块。

(1)控制器(Controller):接受用户的输入并调用模型和视图去完成用户的需求。该部分是用户界面与Model的接口。一方面它解释来自视图的输入,将其解释为系统能够理解的对象,同时也识别用户动作,并将其解释为对模型特定方法的调用;另一方面,它处理来自于模型的时间和模型逻辑执行的结果,调用适当的视图为用户提供反馈。

(2)模型(Model):应用程序的主题部分。模型表示业务数据和业务逻辑。一个模型能为多个视图提供数据。由于同一个模型可以被多个视图重用,所以提高了应用的可重用性。

(3)视图(View):用户看到并与它交互的界面。视图向用户显示相关的数据,并能接收用户输入的数据,但是他并不进行任何实际的业务处理。视图向模型查询业务状态,但不能改变模型。视图还能接收模型发出的数据更新事件,从而对用户界面进行同步更新。

MVC流程:首先控制器接收用户的请求,并决定调用哪个模型来处理;然后,模型根据用户请求进行相应的业务逻辑处理,并返回数据;最后,控制器调用相应的视图来格式化模型返回的数据,并通过视图呈现给用户。使用MVC模式设计表现层,可以有以下优点:

(1)允许多种用户界面的扩展。视图与模型没有必然的联系,都是通过控制器发生关系,这样如果要增加新类型的用户界面,只需要改动相应的视图和控制器即可,模型无需改动。

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

(3)功能强大的用户界面。用户界面与模型方法调用组合起来,是程序的使用更清晰,可将友好的界面发布给用户。

2.MVP模式

MVP(Model-View-Presenter)模式提供数据,View负责显示,Control/Presenter负责逻辑的处理。MVP是从MVC模式演变而来,其基本思想是有相同的地方:Control/Presenter负责逻辑的处理,Model提供数据,View负责显示。当然MVP与MVC也有一些显著的区别,MVC模式中元素之间混乱的交互主要体现在允许view和model之间交互,但是在MVP模式下是不允许的。在MVP中View不直接使用model,他们之间的通信通过presenter来进行,所有的交互都发生在presenter内部,而在MVC中view会直接从model中读取数据而不是通过controller。

MVP不仅仅避免了view和model之间的耦合,还进一步降低了presenter对view的依赖。Presenter依赖的是一个抽象化的view,即view实现的接口Iview,这样带来最直接的好处,就是定义在presenter中的UI处理逻辑变得易于测试。

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

(1)模型与视图完全分离,可以修改视图而不影响模型;

(2)可以将一个presenter用于多个视图,而不需要改变presenter的;逻辑。这个特性非常有用,因为视图的变化总是比模型的变化频繁。

(3)可以高效使用模型,因为所有的交互都发生在一个地方,presenter内部。

(4)如果把逻辑放在presenter中,就可以脱离用户接口来测试这些逻辑。

3.MVVM模式

MVVM模式正是为了解决MVP中UI种类变多,接口也不断增加的问题。MVVM模式全称是模型-视图-视图模型,它和MVC,MVP类似,主要目的都是为了实现视图和模型的分离,不同的是MVVM中,View与Model的交互通过ViewModel来实现,ViewModel是MVVM的核心,它通过DataBingding实现view与Model之间的双向绑定,其内容包括数据状态处理、数据绑定及数据转换。例如,View中某处的状态和Model中某部分数据绑定在一起,这部分数据一旦变更将会反映到view层。这个机制通过ViewModel来实现。

ViewModel是一个专门用于数据转换的控制器,它可以把对象信息转换为视图信息,将命令从视图携带到对象,它通过view发布对象的公共数据,同时向视图提供数据和方法。View和model之间使用DataBinding及其事件进行通信,并把相关事件映射到ViewModel以实现View中的对象与视图模型内容同步,且可以通过双向数据绑定进行更新。

二.使用XML设计表现层,统一web form与windows Form的外观

XML可扩展标记语言与HTML类似,是一种标记语言。与主要用于控制数据的显示和外观的HTML标记不同,XML标记用于定义数据本身的结构和数据类型。由于 XML本身就是一种树形结构描述语言,所以可以很好地支持控件之间的层次结构。同时, XML标记由架构或文档的作者定义,并且是无限制的,所以架构开发人员可以随意约定控件的属性。

三.表现层中UIP设计思想

UIP(UserInterface Process Application Block) 是微软社区开发的众多Application Block 中的其中之一,它是开源的。 UIP 提供了一个扩展的框架,用于简化用户界面与商业逻辑代码的分离的方法,可以用它来写复杂的用户界面导航和工作流处理,并且它能够复用在不同的场景、 并可以随着应用的增加而进行扩展。 使用 UIP框架的应用程序把表现层分为了以下几层。

1.User Interface Components: 这个组件就是原来的表现层,用户看到的和进行交互都是这个组件,它负责获取用户的数据并且返回结果。

2.User Interface Process Components: 这个组件用于协调用户界面的各部分,使其配合后台的活动,例如导航和工作流控制,以及状态和视图的管理。用户看不到这一组件,但是这些组件为User Interface Components提供了重要的支持功能。

UIP的组件主要负责的功能是:管理经过UIC的信息流;管理UIP中各个事件之间的事务;修改用户过程以响应异常;将概念上的交互流程从实现或者涉及的设备上分离出来。保持内部的事物关联状态。

四.表现层动态生成设计思想

基于XML的界面管理技术可实现灵活的界面配置、界面动态生成和界面定制。其思路是用XML生成配置文件及界面所需要的元数据,按不同需求生成界面元素及软件界面。基于XML界面管理技术,包括界面配置、界面动态生成和界面定制三部分。

界面配置是对用户界面的静态定义,通过读取配置文件的初始值对界面配置。由界面配置对软件功能进行裁剪,重组和扩充,以实现特殊需求。

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

通过DOM API读取XML配置文件的表示层信息,通过数据存取类读取数据库中的数据层信息,运行时由界面元素动态生成界面。界面配置和定制模块在软件运行前后修改配置文件,更改界面内容。

基于XML的界面管理技术实现的管理信息系统实现了用户界面描述信息与功能实现代码的分离,可针对不同用户需求进行界面配置和定制,能适应一定程度内的数据库结构改动。只须对 XML文件稍加修改,即可实现系统的移植。

相关推荐
dr李四维1 小时前
iOS构建版本以及Hbuilder打iOS的ipa包全流程
前端·笔记·ios·产品运营·产品经理·xcode
天天扭码2 小时前
五天SpringCloud计划——DAY2之单体架构和微服务架构的选择和转换原则
java·spring cloud·微服务·架构
余生H2 小时前
transformer.js(三):底层架构及性能优化指南
javascript·深度学习·架构·transformer
凡人的AI工具箱2 小时前
15分钟学 Go 第 60 天 :综合项目展示 - 构建微服务电商平台(完整示例25000字)
开发语言·后端·微服务·架构·golang
运维&陈同学3 小时前
【zookeeper01】消息队列与微服务之zookeeper工作原理
运维·分布式·微服务·zookeeper·云原生·架构·消息队列
Komorebi.py4 小时前
【Linux】-学习笔记05
linux·笔记·学习
亦枫Leonlew5 小时前
微积分复习笔记 Calculus Volume 1 - 6.5 Physical Applications
笔记·数学·微积分
冰帝海岸10 小时前
01-spring security认证笔记
java·笔记·spring
小二·11 小时前
java基础面试题笔记(基础篇)
java·笔记·python