Tapestry

          記錄學習Tapestry專用布格格。很多文章都轉載網絡。

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            20 隨筆 :: 0 文章 :: 4 評論 :: 0 Trackbacks

          注意啦,Delegate堂而皇之地作為“一等公民”在C#中“直接支持”,而Tapestry這樣的Java社區的著名項目又“轉而采用”,給個理由先?


          在Tapestry的文檔中,關于Listener Methods有這么一段話:

          Delegate在Java語言中并非“一等公民”,但采用OO思維很容易實現它。還是先來看看Tapestry把Delegate派何用場吧,建立個感性認識:

          關于Delegate的講解,還是看看《應用框架的設計與實現》一書是怎么講的吧:

          -------下列內容引自《應用框架的設計與實現》一書------------

          委托乍看有點兒難于理解,這是因為它調用方法的思路不同于常規。簡言之,委托是以面向對象的方式來調用方法,圖7-1說明了常規的方法調用和委托之間的區別。

          圖7-1 常規方法調用與通過委托的方法調用之間的比較


          使用常規方法調用時,你需要創建一個包含待調用方法的對象,然后調用該方法,并傳遞它需要的參數。其中,指定要調用哪個對象的哪個方法,和調用方法本身,是 “一下子”完成的。然而,通過委托來進行方法調用則不同,它將“方法調用的定義”和“方法的調用”區分開來。仔細觀察圖7-1,有一個delegate的實例,它封裝了調用方法所必須的方法信息。使用委托來調用方法包括三步:定義委托對象,創建委托實例,再調用委托實例。我們知道,委托本質上是為“方法” 本身建立的對象,它和我們大部分代碼中的“方法”感覺上有很大不同。

          -------上面內容引自《應用框架的設計與實現》一書------------

          注意啦,Delegate堂而皇之地作為“一等公民”在C#中“直接支持”,而Tapestry這樣的Java社區的著名項目又“轉而采用”,給個理由先?答案是:它提供的這種兩個對象之間的這種間接(indirection)關系,對平臺級軟件、以及auto wire特別重要的軟件,簡直太有用了。

          你要是說采用“常規Listener方法”也“差不多”呀,我要問了:差不多是差多少?研讀研讀Tapestry本身吧!它同時采用了“常規 Listener方法”和“基于Delegate的Listener方法”,你以為Howard這樣的架構師會是“靠拍腦袋來設計的人”嗎?!

          posted on 2007-01-29 18:44 Tapestry 閱讀(344) 評論(0)  編輯  收藏 所屬分類: Tapestry
          主站蜘蛛池模板: 潼南县| 那曲县| 平乡县| 武邑县| 正安县| 松溪县| 洛扎县| 兴隆县| 汕尾市| 萨嘎县| 马公市| 岳西县| 衡东县| 阿坝县| 北海市| 九龙城区| 哈尔滨市| 麻栗坡县| 黄陵县| 乌恰县| 米泉市| 湄潭县| 福清市| 普陀区| 左贡县| 浦江县| 深水埗区| 增城市| 扎鲁特旗| 青河县| 安丘市| 临洮县| 梅河口市| 南充市| 固阳县| 龙游县| 鄱阳县| 花垣县| 三亚市| 桂阳县| 开封市|