PureMVC設(shè)計模式_第1頁
PureMVC設(shè)計模式_第2頁
PureMVC設(shè)計模式_第3頁
PureMVC設(shè)計模式_第4頁
PureMVC設(shè)計模式_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、AUTHOR: Cliff Hall <>LAST MODIFIED: 3/05/2008翻譯:張啟智 <bbb:/aaamoorwindaaa>最后更新:2008/5/12目錄PureMVC:框架的目標與優(yōu)點1PureMVC框架概述1目標2優(yōu)點2框架概述與UML視圖3框架概述3Façade與核心類4View, Mediators and View組件4Model, Proxies與數(shù)據(jù)對象7Controller與Commands8View, Observer與Notification9接口11IFacade11IModel11

2、IView11IController12IProxy12IMediator12ICommand12IObserver13INotification13PureMVC:框架的目標與優(yōu)點PureMVC框架概述PureMVC是一個輕量級框架,用于創(chuàng)建基于經(jīng)典的模型-視圖-控制器元模式的程序。該免費的開源框架可以應(yīng)用于包括ActionScript 2、 ActionScript 3、Java、C#和其他一些流行的編程語言。他可以被部署在各種平臺下,包括:l 移動環(huán)境:FlashLite, .NET Compact Framework, J2MEl 服務(wù)器環(huán)境:ColdFusion, J2EE, PHP

3、, Pythonl 瀏覽器環(huán)境:Flash/Flex, JavaFX, Silverlightl 桌面環(huán)境.NET, AIR, FLASH, J2SE目標PureMVC有一個非常狹隘的主要目標:用于幫助程序員分離代碼為三個離散的層:即模型,視圖和控制器。完成這個目標,推出一個穩(wěn)定的框架是本文的主要目的。而通過提供一些實例和工具來闡述本框架的作用是接下來的工作。其它一些最初是由ActionScript3文獻推動的目標有:l 簡單且實用的框架范圍l 減少由應(yīng)用層、類的作用、職責和組合造成的程序混亂l 平衡可維護性與可擴展性之間的關(guān)系l 提供清晰和完備的文獻l 避免平臺依賴性l 對開發(fā)者隱藏復雜性l

4、 優(yōu)秀的框架不需要持續(xù)的維護以推出新的特性優(yōu)點框架的選擇會嚴重影響到應(yīng)用架構(gòu),進而影響到成本維護等。所以需要慎重選擇。使用PureMVC框架進行開發(fā)具備下列好處:1) 基于設(shè)計模式l 支持已經(jīng)被時間所證明的設(shè)計模式,可以部署于任何具備支持面向?qū)ο蟮沫h(huán)境l 簡單易懂2) 實用的實現(xiàn)接口的類l 框架是“即開即用”的,只需要很小的實現(xiàn)需求l Façade類提供了與核心類交互的框架3) 松耦合架構(gòu)l 提供可復用的組件、模型數(shù)據(jù)對象和服務(wù)l 包含發(fā)布/訂閱風格(注:觀察者模式)的通知l 建立明確的分離客戶端三層編碼關(guān)系4) 面向接口的編程l 框架支持子類或?qū)崿F(xiàn)接口的擴展l 對所有的框架類定義接

5、口l 所有的類基于可擴展性思想,所有protected修飾的方法、屬性、接口參數(shù)基于方法簽名l 框架支持將來通過其他類庫以分組模式進行擴展,并且與核心包的模式互不依賴5) 完備的文檔l 源代碼免費開放l 完備的源代碼文檔l 概念和統(tǒng)一建模語言(UML)視圖l 所有類和接口的單元測試l 大量的示例代碼和入門教程l 由架構(gòu)師撰寫的術(shù)語闡述與最佳實踐l 已有數(shù)千名學生測試專業(yè)課程框架概述與UML視圖框架概述本文討論PureMVC框架的類和接口,通過簡單的UML(統(tǒng)一建模語言)圖表闡述他們的作用、職責和合作。PureMVC有一個非常狹隘的主要目標:用于幫助程序員分離代碼為三個離散的層:即模型,視圖和控

6、制器。在該經(jīng)典的MVC元模式實現(xiàn)框架中,應(yīng)用層有三個單例(一個只創(chuàng)建一次的類)所表示。而第四個單例,F(xiàn)açade類通過一個單一的接口為應(yīng)用程序之間提供通訊,從而簡化了開發(fā)。l 模型(Model)簡單的指向Proxy的引用。Proxy代碼負責操作數(shù)據(jù)模型,與遠程服務(wù)通信存取數(shù)據(jù)。l 視圖指向Mediator的引用。Mediator管理視圖組件,增加事件監(jiān)聽器,操作視圖組件的狀態(tài)。l 控制器包括命令類及其映射。命令類是無狀態(tài)的,只有需要時才被創(chuàng)建。l Façade單例初始化Model, View, Controller,并且能訪問各層類的Public方法。Façade

7、與核心類Façade類令roxies, Mediators和Commands之間以松耦合的方式允許互相通信,而不需要導入或知道框架核心的存在。當我們創(chuàng)建一個Façade類具體的應(yīng)用時,就可以“即開即用”的使用它了。附帶的,與Façade類的交互將會最大化的降低開發(fā)者對API知識的了解程度。核心成員類Model, View和Controller分別實現(xiàn)了IModel, IView 以及 IController 接口,F(xiàn)açade類實現(xiàn)了由核心接口組成的IFacade接口。View, Mediators and View組件View類被實現(xiàn)為一個用來緩存指向

8、一個IMediator實例引用的單例。Mediators類幫助我們創(chuàng)建或者重用已經(jīng)存在的用戶接口組件,而不用讓他們通訊的PureMVC程序的知識去影響他們。具體的Mediators實例必須實現(xiàn)IMediator接口,通常是作為Mediator類的子類來實現(xiàn)的。View視圖用來顯示數(shù)據(jù)和處理用戶交互。在一個基于flash的應(yīng)用程序中,他們通常通過使用事件和傳遞一些屬性給其Mediators類去檢查或者控制,以便與View的Mediators類交互。一個Mediator類通過View組件的數(shù)據(jù)與之建立了解。當一個Mediator 類的實例被view注冊時,他會被假設(shè)為他需要獲取通知。因此必須返回一

9、個包含所有他感興趣數(shù)據(jù)的通知名數(shù)組。因為Mediator類必須實現(xiàn)IMediator接口,所以一個Mediator實例擁有handleNotification方法。當該實例被View組件注冊,一個Observer實例就被創(chuàng)建并且被注冊給每一個Notification的數(shù)組中。這樣Mediator的handleNotification方法就被觸發(fā),而不論注冊Notification的Mediator是否感興趣。Mediator類由于實現(xiàn)了INotifier接口而具備了sendNotification方法,sendNotification方法的參數(shù)是一個新的Notification通知,而后使用一

10、個IFacade接口的單例去廣播。Mediator類的protected屬性被初始化用于注冊IFacade實例,并且因此Mediator必須在主程序初始化Façade實例后被注冊。Model, Proxies與數(shù)據(jù)對象Model類被實現(xiàn)為一個簡單的指向IProxy引用的單例。Proxy類幫助我們暴露數(shù)據(jù)模型和實體類(當域邏輯和服務(wù)支持時)給應(yīng)用程序,使得程序可以被其它地方被復用或重構(gòu)。我們可能通過使用一個Proxy實例來簡化指向本地數(shù)據(jù)對象的管理,在這種情況下交互可能引起一些數(shù)據(jù)的同步操作。一個Proxy實例也可能被用來進行程序的原創(chuàng)服務(wù)操作,加載或者保持數(shù)據(jù)。這時,我們可能需要出發(fā)

11、一個方法或者基于Proxy去設(shè)置數(shù)據(jù),并且等待該Proxy從服務(wù)器成功加載到數(shù)據(jù)后廣播一個Notification通知。Proxy類由于實現(xiàn)了INotifier接口而具備了sendNotification方法,sendNotification方法的參數(shù)是一個新的Notification通知,而后使用一個IFacade接口的單例去廣播。Proxy類的protected屬性被初始化用于注冊IFacade實例,并且因此Mediator必須在主程序初始化Façade實例后被注冊。Controller與CommandsMacroCommand類從它的構(gòu)造函數(shù)中觸發(fā)initializeMacro

12、Command方法。使用者必須在其子類中重寫initializeMacroCommand方法,一般addSubCommand方法添加所有Command。可以使用SimpleCommands 或者 MacroCommands中的任何一種。View, Observer與NotificationProxies,Mediators與Commands類之間的通訊是通過廣播Notifications來實現(xiàn)松耦合和跨平臺特性的:l Proxies可以發(fā)送,但不能接收Notificationl Mediator聲明感興趣的Notification和接收Notificationl Commands被觸發(fā)或廣播NotificationsPureMVC應(yīng)用程序可能運行在不能訪問Flash Event和EventDispatcher類的環(huán)境中,所以框架使用觀察者模式以一種松耦合的方式在Model, View, Controller之間通信。PureMVC使用觀察者模式就是為了該目的。IObserver攜帶一個希望被關(guān)注(即“被關(guān)注的內(nèi)容”)的對象引用,該對象的一個方法將會在INotification實例被廣播(即“被關(guān)注方法”)時被觸發(fā)。View組件的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論