日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

PureMVC(AS3)剖析:设计模式(二)

發(fā)布時間:2023/12/10 c/c++ 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PureMVC(AS3)剖析:设计模式(二) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

PureMVCAS3)剖析:設(shè)計模式(二)

模式

上一篇中介紹了PureMVC中使用的3種設(shè)計模式:單例模式、觀察者模式、外觀模式。本篇將繼續(xù)介紹剩下的3種設(shè)計模式:

l? 使用中介者(Mediator)模式來封裝UI與系統(tǒng)中其他對象的交互,使得各對象不需要顯示地互相引用,從而使得其耦合松散,而且可以獨立地改變它們之間的交互;

l? 使用代理(Proxy)模式為數(shù)據(jù)對象提供代理以控制數(shù)據(jù)對象的訪問,PureMVCProxy負責操作數(shù)據(jù)模型,與遠程服務(wù)信存取數(shù)據(jù);

l? 使用命令(Command)模式將請求封裝為一個對象,實現(xiàn)“行為請求者”與“行為實現(xiàn)者”解耦將發(fā)出命令的責任和執(zhí)行命令的責任分割開。

1.? 中介者模式

中介者(Mediator)模式:用一個中介對象來封裝一系列對象交互。中介者使各對象不需要相互引用,從而使其耦合松散,而且可以獨立地改變它們之間的交互。適用性:(摘自:《設(shè)計模式:可復用面向?qū)ο筌浖幕A(chǔ)》)

l? 一組對象以定義良好但是復雜的方式進行通信。產(chǎn)生的相互依賴關(guān)系結(jié)構(gòu)混亂且難以理解。

l? 一個對象引用其他很多對象并且直接與這些對象通信,導致難以復用該對象。

l? 想定制一個分布在多個類中的行為,而又不想生成太多的子類。

PureMVC中,Mediator幫助我們創(chuàng)建或重用已有UI組件,而UI不用知道PureMVC框架相關(guān)的東西,UI僅用于顯示數(shù)據(jù)、接收用戶輸入。MediatorUI組件與框架的中介,它負責將來自PureMVC框架的消息轉(zhuǎn)接到UI,并將UI的消息(flash事件)轉(zhuǎn)發(fā)廣播到PureMVC框架。這樣通過Mediator解耦了UIPureMVC框架元素(ProxyMediatorCommand),而不用互相引用。

圖:中介者模式

一個Mediator只與一個UI綁定(11),Mediator構(gòu)造函數(shù)參數(shù)傳遞與之綁定的UI。通過fa?aderegisterMediator方法注冊Mediator,以接收PureMVC框架的通知(通過上篇介紹的外觀模式,可以知道其實最終是通過View這個單例來注冊的,fa?ade只是提供接口)。

圖:MediatorUI的關(guān)系

2.? 代理模式

代理(Proxy)模式:為其它的對象提供一種代理,以控制對這個對象的訪問。按照使用目的來劃分,代理有以下幾種:(摘自:《設(shè)計模式:可復用面向?qū)ο筌浖幕A(chǔ)》)

l? 遠程(Remote)代理:為一個位于不同的地址空間的對象提供一個局域代表對象。這個不同的地址空間可以是在本機器中,也可是在另一臺機器中。遠程代理又叫做大使(Ambassador)。

l? 虛擬(Virtual)代理:根據(jù)需要創(chuàng)建一個資源消耗較大的對象,使得此對象只在需要時才會被真正創(chuàng)建。

l? Copy-on-Write代理:虛擬代理的一種。把復制(克隆)拖延到只有在客戶端需要時,才真正采取行動。

l? 保護(Protect or Access)代理:控制對一個對象的訪問,如果需要,可以給不同的用戶提供不同級別的使用權(quán)限。

l? Cache代理:為某一個目標操作的結(jié)果提供臨時的存儲空間,以便多個客戶端可以共享這些結(jié)果。

l? 防火墻(Firewall)代理:保護目標,不讓惡意用戶接近。

l? 同步化(Synchronization)代理:使幾個用戶能夠同時使用一個對象而沒有沖突。

l? 智能引用(Smart Reference)代理:當一個對象被引用時,提供一些額外的操作,比如將對此對象調(diào)用的次數(shù)記錄下來等。

在所有種類的代理模式中,虛擬(Virtual)代理、遠程(Remote)代理、智能引用代理(Smart Reference Proxy)和保護(Protect or Access)代理是最為常見的代理模式。

PureMVC中,Proxy幫助我們以更易于重用、修改對應(yīng)用程序影響最小的方式暴露數(shù)據(jù)結(jié)構(gòu)、接口給應(yīng)用程序。Proxy可能只是簡單的管理本地數(shù)據(jù)對象,以同步方式獲取或修改數(shù)據(jù);也可能是遠程服務(wù)器數(shù)據(jù),以異步方式操作數(shù)據(jù),服務(wù)器數(shù)據(jù)返回之后以Notification方式告訴應(yīng)用程序。

總之,Proxy 集中程序的Domain Logic(域邏輯),并對外公布操作數(shù)據(jù)對象的 API。它封裝了所有對數(shù)據(jù)模型的操作,不管數(shù)據(jù)是客戶端還是服務(wù)器端的,對程序其他部分來說就是數(shù)據(jù)的訪問是同步還是異步的。

圖:Proxy模式

3.? 命令模式

命令(Command)模式:又稱為行動(Action)模式或交易(Transaction)模式,命令模式把一個請求或者操作封裝到一個對象中。命令模式允許系統(tǒng)使用不同的請求把客戶端參數(shù)化,對請求排隊或者記錄請求日志,可以提供命令的撤銷和恢復功能。(摘自:《設(shè)計模式:可復用面向?qū)ο筌浖幕A(chǔ)》)

命令模式是對命令的封裝,把發(fā)出命令的責任和執(zhí)行命令的責任分割開,委派給不同的對象。每一個命令都是一個操作:請求的一方發(fā)出請求要求執(zhí)行一個操作;接收的一方收到請求,并執(zhí)行操作。命令模式允許請求的一方和接收的一方獨立開來,使得請求的一方不必知道接收請求的一方的接口,更不必知道請求是怎么被接收,以及操作是否被執(zhí)行、何時被執(zhí)行,以及是怎么被執(zhí)行的。

圖:PureMVC中命令執(zhí)行時序

PureMVC中,命令用來檢索、操作Proxy,或者與Mediator通信,或者執(zhí)行其它命令(符合命令)。命令有兩種:SimpleCommandMacroCommand,分別用于執(zhí)行單個任務(wù)、多個任務(wù)。MacroCommand可以順序其實多個SimpleCommand

圖:簡單命令與復合命令

命令模式優(yōu)點:(http://baike.baidu.com/view/1963264.htm

l? 降低對象之間的耦合度。

l? 新的命令可以很容易地加入到系統(tǒng)中。

l? 可以比較容易地設(shè)計一個組合命令。

l? 調(diào)用同一方法實現(xiàn)不同的功能

命令模式缺點:

使用命令模式可能會導致某些系統(tǒng)有過多的具體命令類。因為針對每一個命令都需要設(shè)計一個具體命令類,因此系統(tǒng)可能需要大量具體命令類,這將影響命令模式的使用。

相關(guān)文章

[1]???? PureMVCAS3)剖析:開篇http://goo.gl/uqUV4

[2]???? PureMVCAS3)剖析:實例http://goo.gl/UqnQh

[3]???? PureMVCAS3)剖析:吐槽http://goo.gl/sDHJU

[4]???? PureMVCAS3)剖析設(shè)計模式(一)http://goo.gl/xtiOx

總結(jié)

以上是生活随笔為你收集整理的PureMVC(AS3)剖析:设计模式(二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。