表現層框架設計之使用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.pswp.cn/diannao/14011.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/14011.shtml
英文地址,請注明出處:http://en.pswp.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全維度知識…