從PureMvc 學 設計模式

2021-05-28 07:44:01 字數 1664 閱讀 3795

這個框架是乙個 實現非常精簡mvc 框架  ,適用於 c/s 結構的程式。

框架的核心類有

controller

view

modle

controller 中包含對view的引用  並且包含對 map

string 是通知 型別的名字 ,command 是對應的 命令操作

view  中有乙個 map>; map

mediator 和 相應的 command 都在 view 中註冊,mediator 用於管理 view 與檢視之間的複雜性 ,其實 mediator 可以直接註冊在 controller 中 ,view 的作用是

讓 mediator 和 controller 解耦,。

modle 則負責管理proxy  ,目的是 讓  command  與 proxy 解耦

command  的接受者其實就是 proxy  ,利用 proxy 的邏輯來完成處理 。

observer 模式 在這裡 實現為  乙個 observer  需要定義 ifunction 物件 來處理響應, notifaction  定義傳輸的訊息型別   ,notifer 則是通知的發出者,用來通知各路觀察者

是通過 facade 的 notifyobservers 方法, 而observers 方法 有兩個註冊途徑   一是在controller 中註冊command ,另外就是 在view中註冊medaitor   。

proxy 作為**類 處理各種業務邏輯,可以進行訪問控制? private object data = null 這個屬性我想是不是定義乙個被**型別的物件呢??

facade 的應用  , singleton 的應用 ,注意是多執行緒模式下, 實現方法是 同步了 靜態方法 ,相當於在 class 物件上加鎖了。

總的來說 

iproxy ,command ,modle三個類實現了notifier 介面  ,可以實現通知機制 , 在controller 中實現了註冊命令的功能,在view 中實現了註冊mediator 的功能, 在與元件互動上,mediator 實現了   各種顯示頁面的可變性。

實際應用流程如下,

實現 mediator 介面 , 在 controller 中註冊 關注的事件, 在 使用者介面中事件出發 通過model  交給 proxy 處理 結果返回,並發出結果通知事件,來通知view 選擇 適當的 mediator 來顯示元件。

個人猜想 struts  應該也是類似的架構,不過應該複雜很多   ,所以 以後再分析 struts

上面利用了模式

1.單例

2.門面

3.命令

4.**

5.中介者

6.觀察者

其中 單例 是為了保證框架只有乙個入口

門面 是將整個系統功能整理處理 並提供乙個小介面的api

命令 實現controller 與 處理邏輯的 解耦, 與 web mvc 中的 前端控制器乙個意思   struts 本就是可以實現 事件定義者 和處理者 解耦,命令模式 就是把接受者和處理邏輯放在command裡面 command一般實現 execute   並在適當的時候被呼叫。

**  實現了多業務邏輯的處理,並可以實現訪問控制

中介者  中介者模式實現了 對顯示元件一view 之間複雜關係的解耦

觀察者  實現了通知機制,使得在 view 中註冊的各種 觀察者得到通知。

菜鳥學PureMVC記

最近工作中需要用到flash,開發框架中又是以puremvc為主。mvc是有了解,但是puremvc這個之前則是從沒接觸過。那就學唄 字樣。其中的大概做法,就是解壓,然後將 puremvc as3 2 0 4.swc 新增到專案的庫中。因為,我用的是flashdevelop,所以新增方法如下 選中專...

如何學設計模式

在第一遍學設計模式的時候以看為主,把書中的內容理解,在這個過程中會發現內容很簡單,能很快看完,有種沒多少東西的感覺。是這樣嗎?不然,在緊隨其後的第二遍學習中,以寫 實踐為主,這時候會遇到很多問題,程式執行不起來 不理解,等等。在這一遍的學習中要解決的問題是把 理解了,初極難,但隨著學習的不斷進行,會...

從設計模式怎樣提公升設計

設計模式是一種非常有用的設計參照,基本上每次去讀設計模式的內容總是會獲得新的體會。但是有沒有新的模式呢?我想,這個大概是有的,不過新的模式產生估計會非常困難。在編碼一段時間之後,大概在一年或者兩年之後,我們一般都在想,可不可以把編碼做的更好一些,讓別人更加容易閱讀,更加好維護,更加好修改。懷著這種簡...