hhh

          導(dǎo)航

          <2006年10月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          留言簿(1)

          隨筆檔案

          閱讀排行榜

          評(píng)論排行榜

          常用鏈接

          統(tǒng)計(jì)

          最新評(píng)論

          看JFace與Swing MVC的M

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

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

          評(píng)論

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

          http://www.javabbs.net.cn  回復(fù)  更多評(píng)論   

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

          感覺實(shí)現(xiàn)的復(fù)雜性上沒什么區(qū)別,因?yàn)樵赟WT中IContentProvider根據(jù)不同的Control必須有不同的實(shí)現(xiàn),這相當(dāng)于分擔(dān)了Swing中model的一部分工作  回復(fù)  更多評(píng)論   


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 山阳县| 泉州市| 莱西市| 台山市| 怀集县| 闻喜县| 巴楚县| 沙田区| 乳山市| 浦县| 东兰县| 海晏县| 泽普县| 江源县| 金山区| 武清区| 义乌市| 临安市| 房产| 日土县| 郑州市| 阳城县| 丰原市| 墨竹工卡县| 壶关县| 龙川县| 科尔| 开平市| 平乡县| 南丹县| 澜沧| 南昌市| 保亭| 河曲县| 田东县| 景洪市| 南京市| 兰西县| 丰城市| 赣榆县| 乌拉特中旗|