使用tapestry-delegate提高Tapestry運行效率

來源:互聯網
上載者:User

    在"tapestry-prop"這個Tapestry擴充的啟示下,突然有了靈感,編寫了一個叫做"tapestry-delegate"的擴充。這個擴充的功能和Tapestry內建的"listener:"綁定相似,提供了另一種定義監聽函數(listener method)的方法。這裡我定義它為代理函數,一方面是因為Tapestry使用了監聽函數的名稱,一方面畢竟叫它代理函數更加合適。
    現在,我在java.net上已經建立了一個工程,取名"tapestry-delegate",並且和Tapestry的作者Howard Lewis Ship通過email。感覺他很容易溝通,並且非常熱心,我的做法也得到了他的肯定。你可以通過“https://tapestry-delegate.dev.java.net/”訪問這個項目,下載原代碼和jar檔案。
    "tapestry-delegate"提供了一個叫做"delegate:"的綁定規則,它在兩方面提高了這個綁定的運行效率。首先,它採用了代碼產生的技術產生一個代理類,調用實際方法時不再需要使用反射機制。其次,它可以使用精確的函數定義方式,比方說"delegate:method()","delegate:method(String, int)"等,這樣就避免了搜尋函數的開銷。另外,即便使用"delegate:method"的形式,如果只有一個與給定函數名對應的函數,該函數也會直接被調用,不需要執行任何的搜尋代碼。詳細資料這個不再熬述,下面詳細介紹一下實現的細節。
主要對象

DelegateBinding:實現了Tapestry的IBinding介面和IActionListener介面。在組件裡面擷取的參數實際上就是這個綁定對象,通過它調用到實際綁定的函數。
DelegateMehtod:是一個用於調用實際函數的代理方法,實際運行時將通過代碼產生技術產生執行個體。每一個執行個體對應於一個實際需要調用的函數。
DelegateMethodInvoker:介面定義了調用DelegateMehtod的方法。通過它的不同實現可以實現不同的調用策略。當可以確定函數的調用形式時,直接調用的形式將會比採用搜尋調用的形式快。
AbsoluteDelegateMethodInvoker:DelegateMethodInvoker的一個實現,採用與"listener:"綁定相同的策略搜尋合適的代理方法。
CycleDelegateInvoker:DelegateMethodInvoker的一個實現,調用"method(IRequestCycle)"形式的函數。
CycleParamDelegateInvoker:DelegateMethodInvoker的一個實現,調用"method(IRequestCycle, parameters)"形式的函數。
EmptyParamDelegateInvoker:DelegateMethodInvoker的一個實現,調用"method()"形式的函數。
ParamDelegateInvoker:DelegateMethodInvoker的一個實現,調用"method(parameters)"形式的函數。
主要Factory 方法

    上面提到的主要對象以及它們之間的關係都是通過這三類不同Factory 方法產生和實現的。DelegateClassFactory主要負責產生對象函數的代理類。DelegateMethodInvokerSource主要負責產生並緩衝封裝代理函數的DelegatemethodInvoker對象。DelegateBindingFacotry主要是提供給Tapestry架構使用,在產生綁定時調用並返回一個IBingding執行個體。 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.