YTKNetwork中的命令模式

YTKNetwork中的命令模式

今天開發(fā)中,遇到一個新框架 YTKNetwork .下午抽空,讀了一下源碼.比較感興趣的就是作者提到的設計模式.特簡單記錄一下自己的理解.

對比傳統(tǒng)方式

對于我來說,比較熟悉的方式是對AFNetworking進行一層封裝.然后在block中,對返回數(shù)據進行派發(fā).

YTKNework的方式,應用了命令模式.將請求的必要細節(jié)都封裝到了一個請求對象中.

其實這本身就是命令模式的初衷,行為的請求者(發(fā)起網絡請求的)往往會和行為的實現(xiàn)者(實現(xiàn)網絡請求的,比如AFNetworking)耦合.由于這種耦合關系的存在,這個行為往往無法復用,撤銷或者重做.

優(yōu)點

因為封裝成了對象,那么就可以使用集合對這些對象進行管理,也就是說,可以比較方便的進行排隊,取消,調整優(yōu)先級等操作.

命令模式UML

首先,一個GoF的命令模式的UML圖如下.

15051227462886.jpg

角色職責

Client 創(chuàng)建ConcreteCommand對象并設定其receiver;
Invoker 要求通用命令(最終其實是到了ConcreteCommand) 實施請求
CommandInvoker依賴的接口
ConcreteCommand負責隔離Receiver和它的操作action.
Receiver是可以隨著由Command(ConcreteCommand)對象實施相應請求,而執(zhí)行實際操作的任何對象.

在YTKRequest中角色對應

Client : ViewController/ViewModel
Invoker: YKTNetworkAgent
Command: YTKBaseRequest
ConcreteCommand: CustomRequest
Receiver: AFNetworking

在角色中,Client需要知道Receiver并配置到ConcreteCommand中,所以才有了關系2(關聯(lián)關系),而在YTKRequest中,這個Receiver是唯一的AFNetworking.所以將關系沉入到了框架內部.也就是我們的Client不需知道這個細節(jié).所以2這個線,是不需要的.

整個流程就是:

1.在Client(ViewController或者ViewModel)中組裝遵循Commnad(YTKBaseReuqest)協(xié)議(這里是繼承)的ConcreteCommand(YTKBaseRequest的子類).
2.Invoker(YTKNetworkAgent)將Command加入隊列,按需調用Command(YTKBaseReuqest),找到ConcreteCommand(YTKBaseRequest的子類)
3.ConcreteCommand調用找到Recevier(AFNetworking)執(zhí)行action(網絡請求)
4.按需進行回調

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子绍弟,更是在濱河造成了極大的恐慌看靠,老刑警劉巖坚弱,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件稍味,死亡現(xiàn)場離奇詭異隧熙,居然都是意外死亡婉弹,警方通過查閱死者的電腦和手機睬魂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來镀赌,“玉大人氯哮,你說我怎么就攤上這事∩谭穑” “怎么了喉钢?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長良姆。 經常有香客問我肠虽,道長,這世上最難降的妖魔是什么玛追? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任税课,我火速辦了婚禮,結果婚禮上痊剖,老公的妹妹穿的比我還像新娘韩玩。我一直安慰自己,他們只是感情好陆馁,可當我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布找颓。 她就那樣靜靜地躺著,像睡著了一般叮贩。 火紅的嫁衣襯著肌膚如雪击狮。 梳的紋絲不亂的頭發(fā)上佛析,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天,我揣著相機與錄音彪蓬,去河邊找鬼说莫。 笑死,一個胖子當著我的面吹牛寞焙,可吹牛的內容都是我干的。 我是一名探鬼主播互婿,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼捣郊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了慈参?” 一聲冷哼從身側響起呛牲,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎驮配,沒想到半個月后娘扩,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡壮锻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年琐旁,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片猜绣。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡灰殴,死狀恐怖,靈堂內的尸體忽然破棺而出掰邢,到底是詐尸還是另有隱情牺陶,我是刑警寧澤,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布辣之,位于F島的核電站掰伸,受9級特大地震影響,放射性物質發(fā)生泄漏怀估。R本人自食惡果不足惜狮鸭,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望奏夫。 院中可真熱鬧怕篷,春花似錦、人聲如沸酗昼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽麻削。三九已至蒸痹,卻和暖如春春弥,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背叠荠。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工匿沛, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人榛鼎。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓逃呼,卻偏偏與公主長得像,于是被迫代替她去往敵國和親者娱。 傳聞我的和親對象是個殘疾皇子抡笼,可洞房花燭夜當晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內容