iOS組件化之CTMediator實戰(zhàn)

最近在看組件化相關內容安接,然后研究了下目前用的比較多的組件化方式,casa大神提供的CTMediator組件化方式。


組件化改造前后對比圖.png

這里使用下別人的一個圖片來說明組件化的作用盏檐。在組件化之前歇式,各個模塊之間的依賴很嚴重,如果想要獨立某個功能胡野,難上加難材失,引入CTMediator的組件化思路之后,很容易解偶硫豆,各個模塊之間相互獨立龙巨,想怎么玩就怎么玩。

下面我說下到底要怎么通過該思路去實現(xiàn)本地組件之間的相互調用熊响,源碼的解讀我就不去做解釋了旨别,原理其實很簡單,通過runtime運行時方式汗茄,通過類(class)去執(zhí)行方法(selector)秸弛。

我demo中的結構

這個是我demo實踐的項目結構,假如HomeController是我整個項目的主頁洪碳,它需要調用其他項目團隊開發(fā)的組件ModuleA递览,我們只需要在咱們的項目中創(chuàng)建一個基于CTMediator的類別,同時組件ModuleA只需要創(chuàng)建一個中間類Target_ModuleA就可以實現(xiàn)從咱們的App調用組件的功能瞳腌,組件團隊又可以獨立完成自己的內容绞铃,完全符合架構思想“開閉原則”。

這里要注意的是:在組件創(chuàng)建公開API的時候纯趋,類名需要以Target_開頭憎兽,方法名需要以Action_開頭,原因是因為源碼里的方法是需要根據(jù)此開頭內容判斷Class和Method的吵冒,可以自己去研究下源碼里的方法- (id)performTarget:(NSString *)targetName action:(NSString *)actionName params:(NSDictionary *)params shouldCacheTarget:(BOOL)shouldCacheTarget;

下面是我各個文件的代碼纯命,供參考
CTMediator+InteractiveModule.m文件內容:

#import "CTMediator+InteractiveModule.h"

@implementation CTMediator (InteractiveModule)

- (UIViewController *)interactiveModuleA:(NSDictionary *)params{
    
    UIViewController *moduleAController = [self performTarget:@"ModuleA" action:@"nativeCallModuleA" params:params shouldCacheTarget:NO];
    return moduleAController;
}

@end

Target_ModuleA.m文件內容:

#import "Target_ModuleA.h"
#import "OneViewController.h"

@implementation Target_ModuleA

- (UIViewController *)Action_nativeCallModuleA:(NSDictionary *)params
{
//  組件控制內部跳轉
    OneViewController *controller = [OneViewController new];
    controller.params = params;
    return controller;
}

@end
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市痹栖,隨后出現(xiàn)的幾起案子亿汞,更是在濱河造成了極大的恐慌,老刑警劉巖揪阿,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件疗我,死亡現(xiàn)場離奇詭異,居然都是意外死亡南捂,警方通過查閱死者的電腦和手機吴裤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來溺健,“玉大人麦牺,你說我怎么就攤上這事。” “怎么了剖膳?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵魏颓,是天一觀的道長。 經常有香客問我吱晒,道長甸饱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任仑濒,我火速辦了婚禮叹话,結果婚禮上,老公的妹妹穿的比我還像新娘躏精。我一直安慰自己渣刷,他們只是感情好,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布矗烛。 她就那樣靜靜地躺著,像睡著了一般箩溃。 火紅的嫁衣襯著肌膚如雪瞭吃。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天涣旨,我揣著相機與錄音歪架,去河邊找鬼。 笑死霹陡,一個胖子當著我的面吹牛和蚪,可吹牛的內容都是我干的。 我是一名探鬼主播烹棉,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼攒霹,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了浆洗?” 一聲冷哼從身側響起催束,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎伏社,沒想到半個月后抠刺,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡摘昌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年速妖,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片聪黎。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡罕容,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情杀赢,我是刑警寧澤烘跺,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站脂崔,受9級特大地震影響滤淳,放射性物質發(fā)生泄漏。R本人自食惡果不足惜砌左,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一脖咐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧汇歹,春花似錦屁擅、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至痰哨,卻和暖如春胶果,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背斤斧。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工早抠, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人撬讽。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓蕊连,卻偏偏與公主長得像,于是被迫代替她去往敵國和親游昼。 傳聞我的和親對象是個殘疾皇子甘苍,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內容