為了保證組合操作的閉包性質,這兩個組合子都實現了 Component 接口,并且把組合的結果當作一個 Component 返回。這兩個組合子的主要功能就是把給定的布局空間按照指定的比例進行分隔,并把給定的組件放到分隔好的布局空間中去。其中的算法比較簡單,就不再贅述。
基于這些基本的原子元素和組合子,就可以構建出任意復雜程度的布局樣式。在前面語言介紹小節中,我們給出了一些如:center、h_seq、v_seq、block 以及 block_with_margin 等簡單布局樣式的實現。讀者可以根據自己的需要定義并積累自己的布局樣式庫。
前面提到過,我們的界面布局語言是分層的,大家可以看出,在最底層是我們的 Java Swing 界面開發語言,我們在其上構建出了界面布局位置描述語言,使用該布局位置描述語言中的組合子:beside 和 above,我們在其上又構建出了用來定義和表達各種布局樣式的布局樣式描述語言。
敏銳的讀者會發現,在前面講述的界面布局語言中僅僅涉及了界面布局元素的顯示樣式方面的內容,但是一個完整的界面是需要和后端的應用邏輯交互的,因此還需要一個粘合界面顯示和應用模型的層次。
確實是這樣的,我們在這里之所以沒有提這項內容主要是為了避免陷入其實現的瑣碎細節中,從而可以集中介紹界面布局語言本身。為了能夠對界面布局元素進行編程控制,我們讓每個布局元素都有一個“擁有者”。和布局元素在物理上的包含關系不同,“擁有者”是編程語義上的。也就是說,對布局元素在編程意義上的所有控制操作都在其“擁有者”中完成,這種思路完全隔離了顯示和控制,其實就是 MVP 模式的一種實現。
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/