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