ruby組合模式的實際應用
作者:佚名 時間:2012-06-10 分享到:
如果你在ruby的代碼庫中尋找使用組合模式的具體例子,那很快就會在圖形用戶界面(gui)庫中尋找到它的蹤影.所有先進的gui都支持一些基本的構件,比如文字標簽,輸入框和菜單等.
這些基本的gui構件相互之間有很多共同處,無論是按鈕,文字標簽或是菜單項目它們都包含一個字體,一種背景色和一種前景色,并且它們都占用一定的屏幕區域,當然,所有先進的gui絕非一組簡單的基本gui構件的集合.實際上,gui是構建在一個繼承層次之上的,從一個文字標簽或者文本框開始,將它們放在特定的位置,然后將它們和視覺元素綁定在一起提示用戶輸入他的名字,再把這個名字輸入框和一個相信的姓氏輸入框及一個社會保險號輸入框合在一起,這些元素還將合并在一系列更大,更復雜的gui構件中,如果你認真閱讀子本章,那你一定會覺得這個過程非常熟悉,我們則好創建子一個gui組合.
一個在gui工具盒中使用組合模式的,很好的例子可以在fxruby中找到.fxruby是一個ruby擴展,它將fox(一個開源的跨平臺gui工具盒)帶入子ruby世界.fxbuby為你提供子一組分門別類的用戶界面組件,從最基本的fxbution和fxlabel到進學精致的fxcolorselector和fxtable.你還可以創建蹤跡的組件,甚至是使用fxhorizontalframe和它衍生的fxverticalframe所構成的任意復雜的組件,這兩個框架類充當窗口的角色,允許你向其中添加子組件來單一的gui元素.這兩個框架類的不同之處在于它們如何顯示其中的子組件,一個是將子組件水平地排放,而別一個則垂直地顯示它們.無論垂直還是水平,這兩個fox的框架類都是fxwindow類的子類,其他的組件也是如此.