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

歡迎訪問 生活随笔!

生活随笔

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

c/c++

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

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

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

模式

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

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

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

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

1.? 中介者模式

中介者(Mediator)模式:用一個中介對象來封裝一系列對象交互。中介者使各對象不需要相互引用,從而使其耦合松散,而且可以獨立地改變它們之間的交互。適用性:(摘自:《設計模式:可復用面向對象軟件的基礎》)

l? 一組對象以定義良好但是復雜的方式進行通信。產生的相互依賴關系結構混亂且難以理解。

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

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

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

圖:中介者模式

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

圖:MediatorUI的關系

2.? 代理模式

代理(Proxy)模式:為其它的對象提供一種代理,以控制對這個對象的訪問。按照使用目的來劃分,代理有以下幾種:(摘自:《設計模式:可復用面向對象軟件的基礎》)

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

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

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

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

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

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

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

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

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

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

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

圖:Proxy模式

3.? 命令模式

命令(Command)模式:又稱為行動(Action)模式或交易(Transaction)模式,命令模式把一個請求或者操作封裝到一個對象中。命令模式允許系統使用不同的請求把客戶端參數化,對請求排隊或者記錄請求日志,可以提供命令的撤銷和恢復功能。(摘自:《設計模式:可復用面向對象軟件的基礎》)

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

圖:PureMVC中命令執行時序

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

圖:簡單命令與復合命令

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

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

l? 新的命令可以很容易地加入到系統中。

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

l? 調用同一方法實現不同的功能

命令模式缺點:

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

相關文章

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

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

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

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

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。