PureMVC QA:Why can't Proxies hear Notifications?

[譯]PureMVC QA:Why can't Proxies hear Notifications?

在PureMVC中,爲何不在Proxies中監聽通知呢?

Q: 代理不能接受通知消息的理由是什麼?程序員

引至:《pureMVC最佳實踐和實現原理》mvc

代理,發送,當不接受通知。spa

對代理(Proxy)而言,若是監聽通知的話將與視圖(View)和控制器(Controller)耦合太緊。設計

視圖和控制層必須監聽來至代理(Proxies)通知,做爲呈現並容許用戶交互由代理持有的數據模型數據。代理

不管怎樣,視圖和控制器的變更應該不能影響到數據模型層。rem

例如,一個管理應用和一個相關的用戶應用能夠共享相同的數據模型。僅僅是使用不一樣的用例而使用不一樣的視圖/和控制器來操做同一數據模型。get

代理之間能夠得到並操做彼此須要的數據,大多數領域模型中都天然地存在這個層次,並有充分的理由容許模型這麼作的,由於代理提供數據的訪問控制,並須要維護其數據完整性。it

某些人可能會爭論,須要在代理(Proxies)之間經過發送通知以便於彼此解耦(這樣代理就須要監聽通知消息了)。這是對的,但咱們主要關注的是MVC各層之間的鬆耦合,具體一點就是模型和視圖之間的鬆耦合,而模型之間的耦合屬於同一層之下。io

若是代理能夠監聽消息,有可能有粗心的程序員可能視圖讓一個代理監聽來至與定義在視圖或控制器層的通知消息,這樣,模型與視圖間就相互耦合了,這時若是把模型層移到另一個應用程序中將會變得困難。import

因此,代理不容許接收通知的設計決定是在兩個罪惡耦合源之間取其輕罷了。

相關文章
相關標籤/搜索