PureMVC的原理和邏輯

來源:互聯網
上載者:User

        PureMVC,就如同它的名字是,它是一個純粹的小巧的MVC架構。許多人都錯誤地把PureMVC誤認為它是一個Flash的MVC架構或者是Flex的MVC架構。既然它是一個純架構,那麼,它就不僅僅是支援某種特定的語言,它的設計是與語言無關的。去過它的官網的人都看到,它支援了好多種常用的程式設計語言,下面是它的官網的一個支援的開發語言的:

        看到了上面的C#,學ASP.NET的人是不是看到了福音了?平時看到JSP有Struts,Hibernate,Spring等眾多優秀的架構,而.NET的好像還沒有,心裡真是一百個的不爽,現在我們終於也有MVC架構了。雖然微軟現在正在出一個ASP.NET MVC架構,但是它現在還是Preview5,也不知道什麼時候才能出正式版,期待一下吧,微軟出的東西應該是很容易使用的。不過,據說這個架構只支援.NET3.5的版本,如果真是這樣的話,這是像我這種還在使用.NET2.0的人來說是一大的遺憾。

        還有一點的是,這個架構和我上面提到過的JSP架構不同,它是一個真正的MVC架構,它不像Struts它們那樣只支援Web應用的開發,雖然現在這種開發很流行。它只是一個架構,它是讓我們更好的管理我們的程式,使得它易於維護,易於擴充和移植。它只是一個真正的MVC架構,它並不面向於特定的應用。我們可以使用它開發案頭應用,Web應用等等。同時,它還是一個輕量級的架構,而且還是很輕的那種,它的大小最多也就2,30K而已。

        關於PureMVC的學習教程真的好少,找了好幾天,結果還是只找到官網上的那個Best Practices。本人比較愚笨,研究了好幾天,把那個文檔看了又看,終於才明白了它大概的原理,現在寫下來,分享一下心得。

        PureMVC架構的目標很明確,即把程式分為低耦合的三層:Model、View和Controller。它們合稱為PureMVC架構的核心,由Facade統一管理。關於它的核心層,我們不需要管太多,只需要記得下面幾點就可以了:

        一、Model儲存對Proxy對象的引用,Proxy負責操作資料模型,與遠程服務通訊存取資料。

        二、View儲存對Mediator對象的引用。由Mediator對象來操作具體的視圖組件(View Component,例如Flex的DataGrid組件),包括:添加事件監聽器,發送或接收Notification ,直接改變視圖組件的狀態。

        三、Controller儲存所有Command的映射。Command可以擷取Proxy對象並與之互動,通過發送Notification來執行其他的Command。

        上面的什麼對什麼的引用,可以一開始看的時候很難理解,我們暫時不用管它誰對誰的引用的。這些已經由架構為我們管理好了,我們要所要做的是編寫具體的Command,Mediator,Proxy。

        一、Proxy是負責操作資料模型的,什麼是資料模型?資料模型就是資料庫,XML等等。我們可以直觀地理解為,Proxy是用來對資料模型進行查詢、插入、更新、刪除等操作的類。操作完成後,它就會發送Notification,也就是通知,告訴其它兩個層我已經完成工作了。

        二、Mediator負責操作具體的視圖組件,包括:添加事件監聽器,發送或接收Notification ,直接改變視圖組件的狀態。好像抽象了點。具體的說吧,Mediator是負責系統管理使用者介面,與使用者進行互動操作的。如:給Button添加事件,當使用者點擊按鈕時,發送Notification,告訴Controler我們執行什麼樣的操作。比如這是一個登入的按鈕,那麼Mediator就會告訴發送通知給Controler,告訴它要執行登入操作。此外,Mediator還負責直接改變視圖的狀態。就像,我點擊了登入按鈕後,Mediator就改變它,讓登入按鈕不過用,避免重複操作。它還可以在視圖上顯示一條資訊,告訴我正在執行登入操作。總的來說,Mediator是用來管理檢視的。

        三、Command可以擷取Proxy對象並與之互動,通過發送Notification來執行其他的Command。再拿上面的登入例子作解釋,當點擊了登入按鈕後,Mediator就會告訴Controler要執行相應的Command了,比如LoginComand。既然是登入,那麼還得要知道使用者的資訊才行。Command就會發送Notification告知Proxy,我需要某個使用者的資訊。那麼Proxy就會訪問資料庫(也可以是別的資料模型),查詢對應的使用者資訊,然後發送Notification通知Command我已經查詢好了,差把資訊返回給Command進行驗證,與些同時,Mediator也可以接收Proxy發送的Notification,通過視圖告訴使用者正在驗證資訊。Command驗證了使用者資訊後,發送Notification把驗證結果返回給Mediatory,告訴使用者驗證的結果。或者,Command也可以發送Notification執行其它的Command操作,比如驗證通過後,讀取使用者的詳細資料。

  上面的Command,Mediator,Proxy的具體實作類別都是要自己編寫的,工作量還是比較大的。

  PureMVC架構的原理大概就是這樣子,寫得不足的地方還請各位大蝦多多指點。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.