什么是 PureMVC 框架(提供下载)
PureMVC是在基礎(chǔ)的經(jīng)典模型、視圖和控制器上建立的一個(gè)輕量級(jí)的應(yīng)用框架,這種開源框架是免費(fèi)的,它最初是執(zhí)行的ActionScript 3語(yǔ)言使用的Adobe Flex、Flash和AIR,現(xiàn)在已經(jīng)移植到幾乎所有主要的發(fā)展平臺(tái),目前支持兩個(gè)版本框架:標(biāo)準(zhǔn)和多核,總之,標(biāo)準(zhǔn)版提供了一種簡(jiǎn)單的編碼分離的方法,按照MVC設(shè)計(jì)概念。除此之外,多版本允許多個(gè)PureMVC應(yīng)用運(yùn)行在同一個(gè)虛擬機(jī);模塊化編程
?
AS3版 PureMVC 下載地址:
http://puremvc.org/pages/downloads/AS3/PureMVC_AS3.zip
?
?
PureMVC框架概述與UML視圖
docx文檔下載地址:http://as3libs.googlecode.com/files/PureMVC.rar
框架概述
本文討論P(yáng)ureMVC框架的類和接口,通過簡(jiǎn)單的UML(統(tǒng)一建模語(yǔ)言)圖表闡述他們的作用、職責(zé)和合作。
PureMVC有一個(gè)非常狹隘的主要目標(biāo):用于幫助程序員分離代碼為三個(gè)離散的層:即模型,視圖和控制器。
在該經(jīng)典的MVC元模式實(shí)現(xiàn)框架中,應(yīng)用層有三個(gè)單例(一個(gè)只創(chuàng)建一次的類)所表示。而第四個(gè)單例,Fa?ade類通過一個(gè)單一的接口為應(yīng)用程序之間提供通訊,從而簡(jiǎn)化了開發(fā)。
模型(Model)簡(jiǎn)單的指向Proxy的引用。Proxy代碼負(fù)責(zé)操作數(shù)據(jù)模型,與遠(yuǎn)程服務(wù)通信存取數(shù)據(jù)。
視圖指向Mediator的引用。Mediator管理視圖組件,增加事件監(jiān)聽器,操作視圖組件的狀態(tài)。
控制器包括命令類及其映射。命令類是無(wú)狀態(tài)的,只有需要時(shí)才被創(chuàng)建。
Fa?ade單例初始化Model, View, Controller,并且能訪問各層類的Public方法。
?
Fa?ade與核心類
?
Fa?ade類令roxies, Mediators和Commands之間以松耦合的方式允許互相通信,而不需要導(dǎo)入或知道框架核心的存在。當(dāng)我們創(chuàng)建一個(gè)Fa?ade類具體的應(yīng)用時(shí),就可以“即開即用”的使用它了。附帶的,與Fa?ade類的交互將會(huì)最大化的降低開發(fā)者對(duì)API知識(shí)的了解程度。
核心成員類Model, View和Controller分別實(shí)現(xiàn)了IModel, IView 以及 IController 接口,Fa?ade類實(shí)現(xiàn)了由核心接口組成的IFacade接口。
?
View, Mediators和View組件
?
View類被實(shí)現(xiàn)為一個(gè)用來(lái)緩存指向一個(gè)IMediator實(shí)例引用的單例。
Mediators類幫助我們創(chuàng)建或者重用已經(jīng)存在的用戶接口組件,而不用讓他們通訊的PureMVC程序的知識(shí)去影響他們。具體的Mediators實(shí)例必須實(shí)現(xiàn)IMediator接口,通常是作為Mediator類的子類來(lái)實(shí)現(xiàn)的。
View視圖用來(lái)顯示數(shù)據(jù)和處理用戶交互。在一個(gè)基于flash的應(yīng)用程序中,他們通常通過使用事件和傳遞一些屬性給其Mediators類去檢查或者控制,以便與View的Mediators類交互。一個(gè)Mediator類通過View組件的數(shù)據(jù)與之建立聯(lián)系。當(dāng)一個(gè)Mediator 類的實(shí)例被view注冊(cè)時(shí),他會(huì)被假設(shè)為他需要獲取通知。因此必須返回一個(gè)包含所有他感興趣數(shù)據(jù)的通知名數(shù)組。
因?yàn)镸ediator類必須實(shí)現(xiàn)IMediator接口,所以一個(gè)Mediator實(shí)例擁有handleNotification方法。當(dāng)該實(shí)例被View組件注冊(cè),一個(gè)Observer實(shí)例就被創(chuàng)建并且被注冊(cè)給每一個(gè)Notification的數(shù)組中。這樣Mediator的handleNotification方法就被觸發(fā),而不論注冊(cè)Notification的Mediator是否感興趣。
Mediator類由于實(shí)現(xiàn)了INotifier接口而具備了sendNotification方法,sendNotification方法的參數(shù)是一個(gè)新的Notification通知,而后使用一個(gè)IFacade接口的單例去廣播。
?
Mediator類的protected屬性被初始化用于注冊(cè)IFacade實(shí)例,并且因此Mediator必須在主程序初始化Fa?ade實(shí)例后被注冊(cè)。
?
Model, Proxies與數(shù)據(jù)對(duì)象
?
Model類被實(shí)現(xiàn)為一個(gè)簡(jiǎn)單的指向IProxy引用的單例。
Proxy類幫助我們暴露數(shù)據(jù)模型和實(shí)體類(當(dāng)域邏輯和服務(wù)支持時(shí))給應(yīng)用程序,使得程序可以被其它地方被復(fù)用或重構(gòu)。
我們可能通過使用一個(gè)Proxy實(shí)例來(lái)簡(jiǎn)化指向本地?cái)?shù)據(jù)對(duì)象的管理,在這種情況下交互可能引起一些數(shù)據(jù)的同步操作。一個(gè)Proxy實(shí)例也可能被用來(lái)進(jìn)行程序的原創(chuàng)服務(wù)操作,加載或者保持?jǐn)?shù)據(jù)。這時(shí),我們可能需要出發(fā)一個(gè)方法或者基于Proxy去設(shè)置數(shù)據(jù),并且等待該P(yáng)roxy從服務(wù)器成功加載到數(shù)據(jù)后廣播一個(gè)Notification通知。
Proxy類由于實(shí)現(xiàn)了INotifier接口而具備了sendNotification方法,sendNotification方法的參數(shù)是一個(gè)新的Notification通知,而后使用一個(gè)IFacade接口的單例去廣播。
Proxy類的protected屬性被初始化用于注冊(cè)IFacade實(shí)例,并且因此Mediator必須在主程序初始化Fa?ade實(shí)例后被注冊(cè)。
?
Controller與Commands
?
MacroCommand類從它的構(gòu)造函數(shù)中觸發(fā)initializeMacroCommand方法。使用者必須在其子類中重寫initializeMacroCommand方法,一般addSubCommand方法添加所有Command。可以使用SimpleCommands 或者 MacroCommands中的任何一種。
?
View, Observer與Notification
?
Proxies,Mediators與Commands類之間的通訊是通過廣播Notifications來(lái)實(shí)現(xiàn)松耦合和跨平臺(tái)特性的:
Proxies可以發(fā)送,但不能接收Notification
Mediator聲明感興趣的Notification和接收Notification
Commands被觸發(fā)或廣播Notifications
PureMVC應(yīng)用程序可能運(yùn)行在不能訪問Flash Event和EventDispatcher類的環(huán)境中,所以框架使用觀察者模式以一種松耦合的方式在Model, View, Controller之間通信。
PureMVC使用觀察者模式就是為了該目的。IObserver攜帶一個(gè)希望被關(guān)注(即“被關(guān)注的內(nèi)容”)的對(duì)象引用,該對(duì)象的一個(gè)方法將會(huì)在INotification實(shí)例被廣播(即“被關(guān)注方法”)時(shí)被觸發(fā)。
View組件的職責(zé)是管理Notification的名稱給Observer列表,以及當(dāng)有Notification被發(fā)送時(shí)通知所有的Observers。
?
文章來(lái)源: 我要學(xué)flash網(wǎng)(www.51xflash.com) 原文地址:http://www.51xflash.com/article/flex/201107/04-14515.html
轉(zhuǎn)載于:https://www.cnblogs.com/jiushini/archive/2012/04/22/2464882.html
總結(jié)
以上是生活随笔為你收集整理的什么是 PureMVC 框架(提供下载)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【转载】ceph作为OpenStack的
- 下一篇: 各排序算法的C++实现与性能测试(转)