淺析iData技術與Swing關系
高級 Swing 體系結構使得開發(fā)人員能夠設計比以前更復雜的顯示。這些顯示通常需要大量極易出錯且難以維護的邏輯。對于高級 Swing 組件(例如,JTable 和 JTree),當程序邏輯使用基于單元的數(shù)據(jù)存儲、編輯和渲染(常需要更多全局知識)時,常會碰到困難。可以將智能數(shù)據(jù),或帶有高級知識的數(shù)據(jù)作為單元數(shù)據(jù)持久存儲在組件模型內(nèi),此單元數(shù)據(jù)提供了開發(fā)高級應用程序的必要知識。本文描述的 iData技術建立了一個通用的體系結構,該體系結構用于將智能數(shù)據(jù)與 Swing 組件集成,同時又保留了“模型-視圖-控制器(Model-View-Controller)”體系結構。通過一個緊密集成的間接方案實現(xiàn)了這一點,該方案將智能數(shù)據(jù)用于數(shù)據(jù)存儲、數(shù)據(jù)檢索間接以及顯示設置間接。生成的間接對象創(chuàng)建了靈活且可擴展的中央位置,用來實現(xiàn)帶有最小復雜性的復雜業(yè)務顯示邏輯和交互功能。
開發(fā)人員可以獲得一個開放源碼 iData 工具箱,以幫助他們將 iData 體系結構集成到他們自己的項目中。該工具箱包含一個接口集合,這些接口定義了間接層、缺省實現(xiàn)、優(yōu)化、定制編輯器與渲染器以及許多示例。請閱讀 參考資料以獲取到該工具箱的鏈接。
iData技術包含三層
數(shù)據(jù)存儲:iData技術假定應用程序?qū)?shù)據(jù)存儲在 DataObject 中。人們將 DataObject 松散定義為符合 JavaBean 的對象,它含有一些字段,以及對應的 get[FieldName]() 和 set[FieldName]() 方法。
顯示組件的數(shù)據(jù)值間接:數(shù)據(jù)間接層由一個定義包含 DataObject 的對象組成。這稱為智能數(shù)據(jù)或 iData 層。(注意,不要將 iData 層同 iData技術相混淆,后者整體上是體系結構的名稱。)iData 層接口定義了訪問與修改 DataObject 中字段的通用方法。針對具體的需求,每個具體的 iData 層類都實現(xiàn)這些通用的取值(accessor)和賦值(mutator)方法。通常,iData 層實現(xiàn)僅僅讀(get)和寫(set) DataObject 中的值。然而,正如您將在示例中所看到的一樣,這一間接創(chuàng)建了一個實現(xiàn)復雜邏輯的集中位置,這些復雜邏輯包括編輯驗證、虛擬數(shù)據(jù)和數(shù)據(jù)修飾。iData 層被進一步細分為不可修改(只讀)和可修改(讀/寫)數(shù)據(jù)的功能。進行這樣的區(qū)分是為了簡化那些帶有無須編輯邏輯的復雜的不可編輯數(shù)據(jù)的接口。
根據(jù)數(shù)據(jù)定制編輯和渲染組件的顯示間接:智能顯示,或稱為 iDisplay 層,通過使用類似于 iData 層的間接來完成智能顯示。iDisplay 層為編輯和渲染 iData 層對象的組件定義了一個接口。這一 iDisplay 層定制的示例包括:通過更改單元背景顏色來顯示錯誤條件,以及創(chuàng)建通用的編輯器,這些編輯器允許 iData 層實現(xiàn)確定最適合于編輯其數(shù)據(jù)的組件。同 iData 層一樣,iDisplay 層也被細分成可修改數(shù)據(jù)和不可修改數(shù)據(jù)的功能。
這三個層結合起來創(chuàng)建了一個緊密集成的間接對象集,這些對象被添加到了組件模型而不是數(shù)據(jù)本身。該體系結構使得基于單元的知識成為可能,同時又可以保留 Swing 中的“模型-視圖-控制器”體系結構。檢索、顯示和編輯數(shù)據(jù)的邏輯被封裝在每個單元內(nèi)的智能數(shù)據(jù)對象中。其結果是用于實現(xiàn)復雜用戶界面顯示和交互的功能上靈活和可擴展的技術。
【編輯推薦】