top
Loading...
通過JavaSwing看透MVC設計模式
一個好的用戶界面(GUI)的設計通常可以在現實世界找到相應的表現。例如,如果在您的面前擺放著一個類似于電腦鍵盤按鍵的一個簡單的按鈕,然而就是這么簡單的一個按鈕,我們就可以看出一個GUI設計的規則,它由兩個主要的部分構成,一部分使得它具有了按鈕應該具有的動作特性,例如可以被按下。另外一部分則負責它的表現,例如這個按鈕是代表了A還是B。

看清楚這兩點你就發現了一個很強大的設計方法,這種方法鼓勵重用reuse,而不是重新設計redesign。你發現按鈕都有相同的機理,你只要在按鈕的頂上噴上不同的字母便能制造出“不同”的按鈕,而不用為了每個按鈕而重新設計一份圖紙。這大大減輕了設計工作的時間和難度。

如果您把上述設計思想應用到軟件開發領域,那么取得相似的效果一點都不讓人驚奇。一個在軟件開發領域應用的非常廣泛的技術Model/View/Controller(MVC)便是這種思想的一個實現。

這當然很不錯,但是或許您又開始疑惑這和java基礎類JFC(Java Foundation Class)中的用戶界面設計部分(Swing)又有什么關系呢?好的,我來告訴你。

盡管MVC設計模式通常是用來設計整個用戶界面(GUI)的,JFC的設計者們卻獨創性的把這種設計模式用來設計Swing中的單個的組件(Component),例如表格Jtable,樹Jtree,組合下拉列表框JcomboBox等等等等。這些組件都有一個Model,一個View,一個Controller,而且,這些model,view,controller可以獨立的改變,就是當組件正在被使用的時候也是如此。這種特性使得開發GUI界面的工具包顯得非常的靈活。

好,來吧,讓我來告訴你它是如何工作的。

MVC設計模式

就象我剛才指出的一樣,MVC設計模式把一個軟件組件區分為三個不同的部分,model,view,controller。



Model是代表組件狀態和低級行為的部分,它管理著自己的狀態并且處理所有對狀態的操作,model自己本身并不知道使用自己的view和controller是誰,系統維護著它和view之間的關系,當model發生了改變系統還負責通知相應的view。

View代表了管理model所含有的數據的一個視覺上的呈現。一個Model可以有一個以上的View,但是Swing中卻很少有這樣的情況。

Controller管理著model和用戶之間的交互的控制。它提供了一些方法去處理當model的狀態發生了變化時的情況。

使用鍵盤上的按鈕的例子來說明一下:Model就是按鈕的整個機械裝置,View/Controller就是按鈕的表面部分。

下面的圖解釋了如何把一個JFC開發的用戶界面分為model,view,controller,注意,view/Controller被合并到了一起,這是MVC設計模式通常的用法,它們提供了組件的用戶界面(UI)。



作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗