iOS功能模塊工廠化

在所有的面向?qū)ο笳Z(yǔ)言中,許多類型的對(duì)象創(chuàng)建需要一些列步驟,你可能需要計(jì)算或取得對(duì)象的初始設(shè)置; 選擇生成哪個(gè)子對(duì)象實(shí)例; 或在生成你需要的對(duì)象之前必須先生成一些輔助功能的對(duì)象.在這些情況,新建對(duì)象的過(guò)程就是一個(gè)工廠.

Person.h
Person.m

這也是一個(gè)簡(jiǎn)單工廠,我們只需要?jiǎng)?chuàng)建一個(gè)Person對(duì)象,而不用管它的創(chuàng)建過(guò)程.
可以說(shuō)在一個(gè)app開(kāi)發(fā)過(guò)程中,我們一直在用各式各樣的工廠,只不過(guò)這些工廠所生產(chǎn)的都是一些小零件,還需要進(jìn)一步加工才能成為才能變成可用的商品.
那么今天來(lái)講講功能模塊的工廠化.由于移動(dòng)設(shè)備的限制以及扁平化的普及,單個(gè)功能模塊的功能會(huì)變得相對(duì)單一,如果依然多變,我們也可以把一個(gè)多變的模塊切割成數(shù)個(gè)功能單一的模塊.例如,醫(yī)院里預(yù)約掛號(hào)就可以分為選擇醫(yī)生和選擇醫(yī)生號(hào)源兩個(gè)流程.既然提到了預(yù)約掛號(hào),那就以預(yù)約掛號(hào)為例子.
將種樹(shù)流程細(xì)分下來(lái)如下:

預(yù)約掛號(hào)流程

其中


選擇醫(yī)生流程

為選擇醫(yī)生流程

選擇號(hào)源流程

為選擇號(hào)源流程.
正常流程下,我們會(huì)依次建立5個(gè)viewController,然后依次push,到最后輸出號(hào)源.功能模塊工廠化后則變?yōu)?
選擇醫(yī)生流程功能--輸入:開(kāi)始--->輸出:醫(yī)生;
選擇號(hào)源流程功能--輸入:醫(yī)生--->輸出:號(hào)源.
既然有了工廠流水線,那么就需要有一個(gè)管理員(manger)來(lái)接受輸入得到結(jié)果后輸出結(jié)果.管理員也要得到每個(gè)界面的管理權(quán)限,就是將viewController的代理設(shè)置為manager.根據(jù)管理風(fēng)格也可以分為三種:

  • 鏈?zhǔn)絺鬟f.將第一個(gè)viewController代理設(shè)為manager,然后一次將后一個(gè)viewController的代理設(shè)置為前一個(gè)viewController,由viewController內(nèi)部做push操作.在得到結(jié)果后,在通過(guò)一層層的代理將值返回給manager.
  • 折疊傳遞.將流程內(nèi)的所有viewController的代理設(shè)置為manager,由manager處理push操作.得到結(jié)果后將值傳給manager
  • 混合傳遞.也就是將鏈?zhǔn)絺鬟f和折疊傳遞混合使用.

manager還需要需要幾個(gè)基本要點(diǎn):1,能夠記錄起點(diǎn)位置;2在流程期間manager不能被銷毀.

Paste_Image.png

使用時(shí)先創(chuàng)建manager的子類

DoctorManager.h
DoctorManager.m

這樣的話,整個(gè)選醫(yī)院流程就可以通過(guò)manager子類來(lái)調(diào)用自己的方法

if (!_doctorManager)
{
    _doctorManager = [[DoctorManager alloc]init];
}
[_doctorManager selectDoctorWithStartViewController:self
                                  doctorSelectBlock:^(Doctor *doctor) {
    //拿到醫(yī)生之后的操作
}];

同樣的選號(hào)流程也可以做出一樣的處理,那么整個(gè)預(yù)約流程就完全可以用以下代碼來(lái)代替

if (!_doctorManager)
{
    _doctorManager = [[DoctorManager alloc]init];
}
[_doctorManager selectDoctorWithStartViewController:self
                                  doctorSelectBlock:^(Doctor *doctor)
{
    //拿到醫(yī)生之后的操作 ->進(jìn)入選號(hào)流程->申請(qǐng)單
    if (!_enterAppoint)
    {
        _enterAppoint = [[EmterApointManager alloc]init];
    }
    [_enterAppoint enterApoint];
    
}];

}
那么以后app項(xiàng)目中,不管是在哪個(gè)地方需要調(diào)用預(yù)約,只需要這段代碼就搞定.
(未完待續(xù)...)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子满败,更是在濱河造成了極大的恐慌腊敲,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,843評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件枯芬,死亡現(xiàn)場(chǎng)離奇詭異论笔,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)千所,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門狂魔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人淫痰,你說(shuō)我怎么就攤上這事最楷。” “怎么了待错?”我有些...
    開(kāi)封第一講書人閱讀 163,187評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵籽孙,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我火俄,道長(zhǎng)犯建,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,264評(píng)論 1 292
  • 正文 為了忘掉前任瓜客,我火速辦了婚禮适瓦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘谱仪。我一直安慰自己玻熙,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,289評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布疯攒。 她就那樣靜靜地躺著揭芍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪卸例。 梳的紋絲不亂的頭發(fā)上称杨,一...
    開(kāi)封第一講書人閱讀 51,231評(píng)論 1 299
  • 那天肌毅,我揣著相機(jī)與錄音,去河邊找鬼姑原。 笑死悬而,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的锭汛。 我是一名探鬼主播笨奠,決...
    沈念sama閱讀 40,116評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼唤殴!你這毒婦竟也來(lái)了般婆?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 38,945評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤朵逝,失蹤者是張志新(化名)和其女友劉穎蔚袍,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體配名,經(jīng)...
    沈念sama閱讀 45,367評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡啤咽,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,581評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了渠脉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宇整。...
    茶點(diǎn)故事閱讀 39,754評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖芋膘,靈堂內(nèi)的尸體忽然破棺而出鳞青,到底是詐尸還是另有隱情,我是刑警寧澤为朋,帶...
    沈念sama閱讀 35,458評(píng)論 5 344
  • 正文 年R本政府宣布盼玄,位于F島的核電站,受9級(jí)特大地震影響潜腻,放射性物質(zhì)發(fā)生泄漏埃儿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,068評(píng)論 3 327
  • 文/蒙蒙 一融涣、第九天 我趴在偏房一處隱蔽的房頂上張望童番。 院中可真熱鬧,春花似錦威鹿、人聲如沸剃斧。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,692評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)幼东。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間根蟹,已是汗流浹背脓杉。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,842評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留简逮,地道東北人球散。 一個(gè)月前我還...
    沈念sama閱讀 47,797評(píng)論 2 369
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像散庶,于是被迫代替她去往敵國(guó)和親蕉堰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,654評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • iOS網(wǎng)絡(luò)架構(gòu)討論梳理整理中悲龟。屋讶。。 其實(shí)如果沒(méi)有APIManager這一層是沒(méi)法使用delegate的须教,畢竟多個(gè)單...
    yhtang閱讀 5,189評(píng)論 1 23
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,085評(píng)論 25 707
  • *面試心聲:其實(shí)這些題本人都沒(méi)怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來(lái)就是把...
    Dove_iOS閱讀 27,139評(píng)論 30 470
  • 現(xiàn)在的我還有什么可想的皿渗?這么好的人還有的找嗎?挺暢快并且些許痛心没卸,應(yīng)該是這樣吧…… 對(duì)不起,那個(gè)總是無(wú)...
    咯佳閱讀 366評(píng)論 3 2
  • 我最早接觸這本書還是從我的老師口中所了解秒旋,當(dāng)時(shí)聽(tīng)的一知半解约计,后來(lái),我又在與同學(xué)的聊天中談?wù)摰剿ㄉ福踔撩喊觯以跁昀?..
    似羽流年閱讀 3,541評(píng)論 2 1