2009-08-14 43 views
1

我剛剛學到了PureMVC框架,對於Proxy和Mediator對象之間的耦合有點困惑。 this頁面上的鏈接連接到描述框架的一些文檔。 (請注意,上述頁面上的鏈接打開PDF文件。)爲什麼介體與Flex PureMVC中的代理相結合?

我所研究的PureMVC的示意圖和示例經常顯示Mediator和Proxy之間的直接耦合。當代理的狀態被更新時,而不是發送新的通知,中介者(從外觀檢索對代理的引用)的狀態已經更新。

這當然似乎簡化了代碼的邏輯,但它也直接將兩個看似不同的組件結合在一起。據我的理解,調解人的目的是將事件從視圖翻譯成PureMVC通知。代理旨在執行一些功能來收集數據並將其傳遞迴視圖。這兩個組件似乎存在於應用程序的不同層,也許不一定耦合在一起。

讓代理對象在狀態更新時發送自己的通知,通過Facade將其轉發給感興趣的調解器是否更有意義?

回答

2

即使您通過通知更新中介,它將耦合到代理,但沒關係,它必須是。

只要你不結合代理我會說沒關係。

胡安

+1

對不起,我不明白。如果中介者從外觀(由代理髮送)接收到通知,並且它包含用於更新視圖的數據對象,那麼它如何耦合到代理?你的意思是他們是通過通知間接耦合的嗎? – bedwyr 2009-08-14 22:00:35

+0

對不起,以前的評論不是很清楚。 我的意思是,調解人總是耦合到代理,如果只是因爲他們必須代表什麼是「內部」的。一般意見「需要知道」關於模型。對我來說,通過通知更新視圖/中介與通過直接訪問代理(使用外觀)更新視圖/中介沒有太大的區別。 只要不是其他方式(代理需要了解中介),我認爲沒關係。 希望這樣做更有意義! Juan – 2009-08-15 18:05:55

+0

其實這樣做更有意義 - 謝謝。我正在閱讀PureMVC論壇中的一些帖子,並且這個主題似乎有許多不同的觀點,其中很多都是非常狂熱的。謝謝你的想法! – bedwyr 2009-08-16 18:23:38

2

那豈不是更有意義,有代理對象發送自己的通知時,他們的狀態更新,這些更新轉發到門面感興趣的調解員?

是的,這正是需要發生的事情。 PureMVC只是一個通告者/觀察者模式實現,它具有一個由Facade鏈接的輕量級MVC結構。我嚴格建議不要將代理與調解人結合;只允許中介人響應代理在數據狀態更改時發送的通知。這允許這些類完全分離。

如果您正在使用Flex,我會建議HydraMVC/HydraFramework這是PureMVC的多核的Flex的特定端口,模仿了PureMVC的API但很冗長要少得多,並且包括了一種通過從代理脫鉤服務器交互DelegateRegistry。 (完全披露,我是這個項目的主要開發人員,但它完全是OSS並且可以自由使用/貢獻。)無論您實施哪個MVC框架,我仍強烈建議通過通知完全解耦代理/介體。

相關問題