ItemRender---之使用ClassFactory生成渲染器

問題
你想在運行時修改List或DataGridColumn的渲染器,或改變渲染器的屬性。

解決方案

使用ClassFactory對象作爲Itemrenderer。ClassFactory實現了IFactory接口,你只要傳一個類對象(即Class類型的對象)給它,它就可以生成這個類的對象。

 

討論

 這種解決辦法,使用了工廠設計模式,並且使用了flex的一些內部機制。在使用工廠模式時,你需要指定一個類型給工廠,這個類型的對象會被工廠類產生並作爲渲染器使用,並且工廠類可以控制渲染器的生命週期。那麼我們如何把類型指定給工廠類呢?我們需要傳一個類對象給工廠類,正如下邊的代碼。

var factory:ClassFactory = new ClassFactory(oreilly.cookbook.SevenTwoFactor );

 

在這裏原文提到了 SevenTwoFactor繼承IFactory接口等等,大家需要多瞭解一些ClassFactory的相關知識,在實際操作中,我們一般都是創建ClassFactory的實例賦值itemRenderer。因爲set itemRenderer方法需要的參數是IFactory類型,系統最終會用這個factory對象實例我們的itemRenderer。也就是說,我們給系統的不是一個itemRenderer而是一個能產生itemRenderer的factory,在系統需要時自己用factory產生itemRenderer的實例,也許信息的讀者會發現,當我們寫mxml的時候,itemRenderer的屬性可以賦值一個類路徑,這就是因爲flex對mxml裏的itemRenderer做了一些特殊的功能,如果你傳的是一個類路徑,系統會幫你創建一個ClassFactory。

例子:

DynamicRenderer 

 

SmallIconRenderer 

 

BigIconRenderer

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章