跟着Android學設計模式:命令模式(command)

命令模式簡介

將一個請求封裝成對象,從而使你可以用不同的請求對客戶進行參數化;對請求排隊或記錄請求日誌,以及支持可撤銷的操作。命令模式可以將調用操作的對象和知道如何實現該操作的對象解耦。同時命令模式是面向過程變成中回調機制的一個替代。


AwesomePlayer中的事件處理機制

AwesomePlayer是Android stagefright播放器StagefrightPlayer的具體實施者。承擔着創建音頻視頻流,解碼器,輸出端,以及處理播放中各種事件的職責。其中對於播放過程中事件的處理採用了命令模式。見下圖:



在AwesomePlayer中創建了一個TimeEventQueue,它有以下幾個作用:

1.儲存Event

2.創建一個Event的執行線程Thread。創建號的Thread回調其ThreadWrapper函數讀取Event。

AwesomePlayer作爲參數保存在每一個AwesomeEvent中。在此模式中,AwesomePlayer擔當着命令的發送者,同時也是命令回調函數的提供者。即AwesomePlayer發送Event到TimeEventQueue隊列中,Thread讀取Event,調用Event的fire函數,fire函數中調用AwesomePlayer提供的回調函數。

使用命令模式的函數是:方便擴展其他的Event;可以對Event按時間排序。可以在TimeEventQueue中制定Event的處理策略。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章