2011-07-17 16 views
3

來自Robotlegs/PureMVC,我非常熟悉視圖介體的概念,即非常傾聽來自「虛擬」視圖的事件/請求併發出進一步請求,發送應用程序範圍信號的組件/ event,根據視圖的請求執行命令等。Flex4主機組件是否具有與視圖介體/幫助程序相同的功能?

Flex 4中引入的主機組件思想可以被認爲與中介相同嗎?唯一讓我略感困擾的是主機組件仍被視爲視圖,因爲它們擴展了SkinnableComponent或任何進一步繼承它的類。在我看來,調解員應該完全置身於視野邏輯之外。不過,我不想爲該主機組件編寫皮膚,主機組件和視圖介體,因爲這會帶來相當大的開銷,並且會導致更多的複雜性而不是抽象。

我應該使用主機組件作爲中介,並在那裏放置應用程序級別的邏輯,例如應用程序級別的事件分派?

回答

1

我也爲SkinnableComponent模式感到困惑。我喜歡我的行爲,生活在不是視圖組件的類中。我甚至不喜歡引用視圖組件,所以我傾向於選擇「演示模型」模式。與SkinnableComponent,主機組件仍然是一個視圖組件,但它包含所有的共享行爲。這感覺有點混亂,我不是這個巨大的粉絲。不過,我確實認爲這是構建可重用,可換膚組件的一種非常好的方法。例如,如果您是組件開發人員,那就太棒了。

這就是說,我覺得它太複雜了,沒有皮膚,主機組件和分離的行爲類。正因爲如此,我傾向於堅持自己給予我們的模式(皮膚和主機組件)以獲取可換膚組件。根據我的經驗,它使測試變得更加複雜,但它就是這樣。

如果我不需要SkinnableComponent(因爲我通常不會創建用於外部消費的可換膚組件),我只需使用單獨的表示模式(通常是PM)並放棄蒙皮模式。

+0

+1 from me;儘管我也質疑組件開發人員的「優秀」。擴展Spark體系結構仍然存在許多擴展MX體系結構的問題;除了現在事情在許多不同的類之間被拋出,並且很難弄清楚發生了什麼。 – JeffryHouser

+0

@ www.Flextras.com:好點。我來自一個角度,我將它與Silverlight中的「模板化」進行了比較。我更喜歡皮膚類方法,因爲它允許您從現有皮膚派生以更改單個屬性(與在Silverlight中複製整個模板和更改一個屬性相反)。面向對象的方法是我認爲很好的。但我同意,Flex4中的「可換膚組件」模式仍然存在很多摩擦。 –

相關問題