2001年10月2日

          在這天,我選擇了生命中的另一半。:::執子之手,與子偕老:::

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

          Template技術可以很大限度的重用一些資源。其基本思想是將公用資源抽取出來進行復用,將變化資源剝離出去,最后二者融合在一起,共同作用產生最后的結果。常見的Template技術用在2個方面,一個是程序代碼Template-即我們常說的Template設計模式;另一個方面是文檔復用-即常見的TemplateEngine,ReportEngine。

          1. Template設計模式
          1.1 Template設計模式
          Tempate設計模式一種非常有用的設計模式,人們通常使用他構建某個算法的骨架。將算法中易變的部分抽象成抽象方法(或者提供默認實現,子類可以重載)留待子類來實現。對于子類而言,只是需要重載父類中抽象方法。這樣整個算法的框架就不會發生變化。同時減少了子類的代碼量。請參看如下類圖:

          o_Desing Pattern-Template.gif
          從上圖可以看出來,AbstractClass的templateMethod()方法規定了整個算法的框架,其中定義了2個抽象方法operation1(),operation2()留待子類來實現。ConceteClassA,ConcreteClassB這2個子類繼承AbstractClass,獨立的分別來實現抽象父類中定義的2個抽象方法。這樣當我們實例化不同ConceteClassA,ConcreteClassB的實例,就可以得到不同的算法運行結構。

          1.2 Template設計模式擴展
          當我們將Template設計模式和CallBack設計模式一起來使用的,可以現實更加靈活的算法,流程處理。Spring框架將這種設計模式的作用發揮到了及至。我們來看其中的一個例子:如何利用這種設計模式來簡化Hibernate的使用。參看代碼片斷:

          r_SpringHibernateTemplate.gif
          在使用Hibernate的時候,一般的過程是首先獲取session 對象,然是使用session去操作數據庫。最后還要處理session的生命周期。為了簡化這種操作,HibernateTemplate的execute()方法中管理了這個session的聲明周期。將數據庫操作放在實現HibernateCallback接口的類中實現。這樣以來HibernateCallback的實現類只需要使用session只做數據庫相關的操作,而不需要去處理Session之類的其他問題。

          2. 文檔復用
          在文檔中,通常有許多的內容是一樣的,只是其中有一部分內容不太一樣。如何能有效的復用文檔中的重復內容呢?一種常見的思路是:將文檔中的重復部分做成模板,將文檔中變化的部分作為數據抽象出來,在真正需要生成文檔的時候,將二者merge起來。這樣就可以最終產生我們所需要的文檔。所以最終的文檔=模板+數據。下圖或許可以表達這樣的思想:
          r_Template Engine.gif
          2.1 Template Engine
          Template Engine是一種專門做文件復用的Engine。其基本思想就是一種Template的文檔復用思想。但是Template Engine通常還有更多的功能。
            ×支持多種文檔格式的輸出,例如:html , xml , pdf等其他code source
            × 支持腳本語言。為了能讓Template具有某些數據處理功能,通常Template Engine還支持一些腳本語言。
          在Java行業,常見的2款Open Source的Template Engine有Velocity和Freemaker


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


          網站導航:
           
          主站蜘蛛池模板: 隆昌县| 赤水市| 华池县| 高唐县| 榆社县| 江川县| 苍南县| 曲麻莱县| 西丰县| 十堰市| 荔浦县| 泰顺县| 连江县| 铜陵市| 枣庄市| 高青县| 铁力市| 玉环县| 林西县| 绥江县| 沁阳市| 珲春市| 桦南县| 嘉黎县| 常宁市| 闵行区| 墨竹工卡县| 丁青县| 长丰县| 景宁| 兴业县| 张北县| 徐闻县| 海晏县| 滨海县| 大冶市| 江津市| 措勤县| 德令哈市| 临西县| 永济市|