hhh

          常用鏈接

          統計

          最新評論

          看JFace與Swing MVC的M

          最近看Eclipse RCP稍微了解一下JFace,看了它的MVC架構有感!
            
            在JFace的ContentViewer抽象中下面的三個方法反映它對待模型的思路:
            public void setContentProvider(IContentProvidercontentProvider)
            
            public void setInput(Object input)
            
            
            public void setLabelProvider(IBaseLabelProvider labelProvider)
            
            顯然setInput是用來配置view背后的數據,從它的參數類型(Object)來講應該是你的與view無關的領域模型.
            
            從這里就可以看出它和swing的根本差異.swing各種不同viewer(在swing的世界叫JComponent)背后的模型是因不同組件而不同的,模型的接口是反應了該組件特征的.
            如 JTable 背后的TableModel,TableModel接口的定義基本表達了作為一個二維表格期望獲得數據的方式如TableModel中有定義這樣的方法:
            Objetc getValueAt(int row,int column)
            
            在JFace中直接可以放入Object類型數據,但各種viewer不一樣對于拿數據的期望也不一樣,
            ContentProvider,LabelProvider解決了上述問題,不同ContentProvider定義了該viewer所期望的拿數據的接口,其實我覺得swing中的model在意義上類似于ContentProvider.
            
            其實感覺JFace的做法在盡量強制你必須構建獨立于GUI的模型.
            而swing的話并沒有這種侵入性,你可以直接實現viewer的模型接口如
            
            class Mymodel implenents TableModel{
            
            }
            
            也可以定義比較獨立的模型然后用對象適配器模式將它們適配到viewer model上!
            
            http://www.douban.com/group/topic/1159250/

          posted on 2006-10-26 18:45 hhh 閱讀(1482) 評論(2)  編輯  收藏

          評論

          # re: 看JFace與Swing MVC的M 2006-10-26 21:12 http://www.javabbs.net.cn

          http://www.javabbs.net.cn  回復  更多評論   

          # re: 看JFace與Swing MVC的M 2006-10-27 08:58 ljf

          感覺實現的復雜性上沒什么區別,因為在SWT中IContentProvider根據不同的Control必須有不同的實現,這相當于分擔了Swing中model的一部分工作  回復  更多評論   


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 孟村| 巴林右旗| 德惠市| 靖宇县| 汉中市| 齐河县| 莱芜市| 镇原县| 沙田区| 台东县| 林甸县| 宜丰县| 阜阳市| 翁牛特旗| 嘉黎县| 建宁县| 五原县| 九寨沟县| 安龙县| 东乌珠穆沁旗| 平遥县| 淅川县| 维西| 抚顺县| 九江县| 炎陵县| 尤溪县| 修水县| 远安县| 古浪县| 昌黎县| 灵山县| 夏邑县| 锡林郭勒盟| 微博| 高平市| 瑞安市| 岳阳市| 钦州市| 临海市| 康保县|