表现层框架设计之使用XML设计表现层

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

1.XML(可扩展标记语言)

        XML(可扩展标记语言)与HTML类似,是一种标记语言。与主要用于控制数据的显示和外观的HTML标记不同,XML标记用于定义数据本身的结构和数据类型。XML已被公认为是优秀的数据描述语言,并且成为了业内广泛采用的数据描述标准。

        由于XML的设计目标是描述数据并集中于数据的内容,所以虽然XML和HTML类似,但是业内很少采用XML作为表现层技术,表现层技术仍然是HTML唱主角。但是,由于Web应用程序对特定浏览器的局限以及性能问题,基于窗体表现形式的胖客户端应用程序又开始有了卷土重来的趋势。这两种应用程序各有优势,在未来很长一段时间这两种技术架构都会并存。因此,许多开发厂商在开发新产品时提出了既要支持胖客户端的表现形式,又要支持Web的表现形式。于是,有人提出将GUI用一个标准的形式描述,对于不同的表现形式,提供特定形式的转换器,根据GUI的描述转换成相应的表现形式。这就要求描述语言有非常好的通用性和扩展性,XML恰恰是这种描述语言理想的载体。

 2.用XML来描述GUI

        对于大多数应用系统,GUI主要是由GUI控件组成。控件可以看成是一个数据对象,其包含位置信息、类型和绑定的事件等。这些信息在XML中都可以作为数据结点保存下来,每一个控件都可以被描述成一个XML结点,而控件的那些相关属性都可以描述成这个XML结点的Attribute。由于XML本身就是一种树形结构描述语言,所以可以很好地支持控件之间的层次结构。同时,XML标记由架构或文档的作者定义,并且是无限制的,所以架构开发人员可以随意约定控件的属性,例如可以约定type="button"是一个按钮,type="panel"是一个控件容器,type="Constraint"是位置等。这样,整个GUI就可以完整而且简单地通过XML来描述。例如:

        <component type="panel" constraint="16,22,78,200"><component type="button" isvisible="false"constraint="17,222,78,20"/></compoent>

        这么一段XML很清晰地表示一个控件容器位置是(16,22,78,200),包含了一个不可视按钮。用上述的XML形式将GUI按照数据描述的形式保存下来代替原先特有的表现形式所需要的GUI描述载体。然后,对于特定的表现技术,实现不同的解析器解析XML配置文件。根据XML中的标签,按照特有的表现技术实例化的GUI控件实例对象。例如,解析器遇到button,JFC解析器会给予JLabel对象,XSLT解析器会给予<button id=…>这样一个HTML字符串,在调用特定表现技术的API将实例化出来的组件对象添加到GUI上显示。

3.策略模式 

        从设计模式的角度来说,整个XML表现层解析的机制是一种策略模式。在调用显示GUI时,不是直接调用特定的表现技术的API,而是装载GUI对应的XML配置文件,然后根据特定的表现技术的解析器解析XML,得到GUI视图实例对象。这样,对于GUI开发人员来说,GUI视图只需要维护一套XML文件即可。

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

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

相关文章

PostgreSQL的扩展(extensions)-常用的扩展之pg_rman

PostgreSQL的扩展&#xff08;extensions&#xff09;-常用的扩展之pg_rman pg_rman 是 PostgreSQL 社区提供的一个备份和恢复管理工具。它能够简化和自动化 PostgreSQL 数据库的备份和恢复过程&#xff0c;并支持全量备份、增量备份和差异备份。pg_rman 提供了方便的命令行接…

【机器学习与大模型】驱动下的电子商务应用

摘要&#xff1a; 随着信息技术的飞速发展&#xff0c;电子商务已经成为当今商业领域中最为活跃和重要的部分之一。而机器学习和大模型的出现&#xff0c;为电子商务带来了新的机遇和挑战。本文深入探讨了机器学习与大模型在电子商务中的应用&#xff0c;包括个性化推荐、精准营…

Java 18:开启Java平台的新纪元

Java 18&#xff1a;探索Java平台的最新飞跃 随着Java 18的发布&#xff0c;Java平台再次证明了其不断创新和适应现代软件开发需求的能力。作为长期支持&#xff08;LTS&#xff09;版本&#xff0c;Java 18不仅带来了性能上的提升&#xff0c;还引入了一系列令人兴奋的新特性…

基于双向长短期记忆 Bi-LSTM 对消费者投诉进行多类分类

前言 系列专栏:【深度学习:算法项目实战】✨︎ 涉及医疗健康、财经金融、商业零售、食品饮料、运动健身、交通运输、环境科学、社交媒体以及文本和图像处理等诸多领域,讨论了各种复杂的深度神经网络思想,如卷积神经网络、循环神经网络、生成对抗网络、门控循环单元、长短期记…

CSS transform 三大属性 rotate、scale、translate

transform 浏览器支持定义和用法translate位移函数rotate旋转函数scale缩放函数 浏览器支持 表格中的数字表示支持该属性的第一个浏览器版本号。 紧跟在 -webkit-, -ms- 或 -moz- 前的数字为支持该前缀属性的第一个浏览器版本号。 定义和用法 transform 属性向元素应用 2D…

在chrome中查找和验证xpath

1、快速获取XPath表达式 按F12打开chrome浏览器的开发者模式&#xff0c;点击选择光标&#xff0c;选择页面上的元素位置&#xff0c;在控制台右键选择Copy XPath&#xff0c;表达式就复制到粘贴板中了。 获取到的xpath路径&#xff1a;//*[id"hotsearch-content-wrapper…

iOS App上架全流程及审核避坑指南

App Store作为苹果官方的应用商店&#xff0c;审核严格周期长一直让用户头疼不已&#xff0c;很多app都“死”在了审核这一关&#xff0c;那我们就要放弃iOS用户了吗&#xff1f;当然不是&#xff01;本期我们从iOS app上架流程开始梳理&#xff0c;详细了解下iOS app上架的那些…

6.1 if语句

计算机语言和人类语言类似&#xff0c;人类语言是为了解决人与人之间交流的问题&#xff0c;而计算机语言是为了解决程序员与计算机之间交流的问题。程序员编写的程序就是计算机的控制指令&#xff0c;控制计算机的运行。借助于编译工具&#xff0c;可以将各种不同的编程语言的…

基础入门三大核心之HTML篇:WebP格式图像全面解析 —— 起源、优势、兼容性及在线压缩方法

基础入门三大核心之HTML篇&#xff1a;WebP格式图像全面解析 —— 起源、优势、兼容性及在线压缩方法 欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以…

冯喜运:5.24黄金今日能否回调?日内国际黄金美原油操作策略

【黄金消息面分析】&#xff1a;在过去的半个世纪里&#xff0c;美国国债作为买入持有的投资手段&#xff0c;轻松超越了黄金。然而&#xff0c;如今债券作为终极避险资产的地位正面临着前所未有的挑战。传统上&#xff0c;投资者将美国国债视为一种超安全的投资&#xff0c;因…

Java高级面试精粹:问题与解答集锦(二)

Java面试问题及答案 1. 什么是Java内存模型&#xff08;JMM&#xff09;&#xff1f;它的作用是什么&#xff1f; 答案&#xff1a; Java内存模型&#xff08;JMM&#xff09;定义了Java虚拟机&#xff08;JVM&#xff09;在计算机内存中的工作方式&#xff0c;包括程序计数器…

【源码+文档+讲解】垃圾分类系统SSM

目 录 摘 要 前 言 第1章 概述 1.1 研究背景 1.2 研究目的 1.3 研究内容 4 第二章 开发技术介绍 5 2.1Java技术 6 2.2 Mysql数据库 6 2.3 B/S结构 7 2.4 SSM框架 8 第三章 系统分析 3.1 可行性分析 3.1.1 技术可行性 3.1.2 经济可行性 3.1.3 操作可行性 3.2 系统…

Word让标题3现形

1 2这个玩意儿是管理样式&#xff08;你找得我好惨啊啊啊啊&#xff09; 3点推荐

MINLP(Mixed-Integer Nonlinear Programming,混合整数非线性规划)

MINLP&#xff08;Mixed-Integer Nonlinear Programming&#xff0c;混合整数非线性规划&#xff09;问题是一类包含整数变量和连续变量的非线性优化问题。它结合了整数规划&#xff08;IP&#xff09;和非线性规划&#xff08;NLP&#xff09;的特征&#xff0c;因而比单纯的整…

基于Vue的图片文件上传与压缩组件的设计与实现

摘要 随着前端技术的发展&#xff0c;系统开发的复杂度不断提升&#xff0c;传统开发方式将整个系统做成整块应用&#xff0c;导致修改和维护成本高昂。组件化开发作为一种解决方案&#xff0c;能够实现单独开发、单独维护&#xff0c;并能灵活组合组件&#xff0c;从而提升开…

JS-02对象的基本使用

目录 1 创建一个对象 2 对象属性操作 2.1 获取属性 第一种方式&#xff1a;.语法 第二种方式&#xff1a;[]语法 2种方式的差异 2.2 设置属性 2.3 删除属性 3 案例 1 创建一个对象 创建一个对象&#xff0c;包含了两个属性&#xff0c;两个方法&#xff1a; var studen…

17. FastDFS面试题汇总

Java全栈面试题汇总目录-CSDN博客 1. 什么是FastDFS&#xff1f; FastDFS是用C语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制&#xff0c;充分考虑了冗余备份、负载均衡、线性扩容等机制&#xff0c;并注重高可用、高性能等指标&#xff0c;使用FastDFS很容易…

什么是线程安全?如何保证线程安全?

目录 一、引入线程安全 &#x1f447; 二、 线程安全&#x1f447; 1、线程安全概念 &#x1f50d; 2、线程不安全的原因 &#x1f50d; 抢占式执行&#xff08;罪魁祸首&#xff0c;万恶之源&#xff09;导致了线程之间的调度是“随机的” 多个线程修改同一个变量 修改…

ESP8266实现获取天气情况

利用太极创客提供的ESP8266 心知天气库获取天气情况并显示 心知天气库地址&#xff1a; ESP8266-心知天气: 本库主要功能为使用ESP8266物联网开发板通过心知天气 API 获取天气等信息。 clone到本地: git clone https://gitee.com/taijichuangke/ESP8266-Seniverse.git 安装该…

跟着Kimi学习结构化提示词:19套内置提示词都在这里了!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;所以创建了“AI信息Gap”这个公众号&#xff0c;专注于分享AI全维度知识…