iOS常用的設(shè)計(jì)模式

設(shè)計(jì)模式主要大概分成三類:

1.創(chuàng)建型:單例設(shè)計(jì)模式挺物、抽象工廠設(shè)計(jì)模式

2.結(jié)構(gòu)型:MVC 模式、裝飾器模式纺棺、適配器模式榄笙、外觀模式骚烧、組合模式

3.行為型:責(zé)任鏈設(shè)計(jì)模式恋谭、觀察者設(shè)計(jì)模式,備忘錄設(shè)計(jì)模式赖草、命令設(shè)計(jì)模式

今天咱就對(duì)常用的設(shè)計(jì)模式談一下我的觀點(diǎn)

一杆逗、最主要也是豬常見的涉及模式MVC模式

這是現(xiàn)在眾多開發(fā)者首選的涉及模式乡翅,他這要涉及View,model和controller

View:主要是扮演的界面展示于用戶交互的角色罪郊,是模型的可視化的結(jié)果蠕蚜,編程中把所有的UIView對(duì)象以及其子控件都?xì)w結(jié)為視圖。

model:主要扮演的是數(shù)據(jù)的存儲(chǔ)悔橄,定義了怎么去操作它靶累。

controller:控制器主要扮演的是協(xié)調(diào)所有工作的中間者,它訪問model的數(shù)據(jù)并在view上展示出來癣疟,同時(shí)它還能監(jiān)聽事件 并根據(jù)要求來操作挣柬,比如viewcontroller

如下圖(從網(wǎng)上當(dāng)下來的)

MVC

二、單例

首先單例的概念睛挚,從字面意思就可以理解邪蛔,是單獨(dú)存在的實(shí)例,也就是說該類在整個(gè)工程中只被創(chuàng)建一次扎狱,它通常用延時(shí)加載的方式值在第一次調(diào)用的時(shí)候創(chuàng)建一次侧到,比如:[NSUserDefaults standardUserDefaults], [UIApplication sharedApplication], [UIScreen mainScreen], [NSFileManager defaultManager]勃教,所有的這些方法都返回一個(gè)單例對(duì)象,實(shí)現(xiàn)步驟如下:

1. 聲明一個(gè)可以新建和獲取單個(gè)實(shí)例對(duì)象的方法

2. 聲明一個(gè)static類型的類變量

3. 聲明一個(gè)只執(zhí)行一次的任務(wù)

4. 調(diào)用dispatch_once執(zhí)行該任務(wù)指定的代碼塊匠抗,在該代碼塊中實(shí)例化上文聲明的類變量

5. 返回在整個(gè)應(yīng)用的生命周期中只會(huì)被實(shí)例化一次的變量


三故源、觀察者模式

首先什么是觀察者模式呢?就是一個(gè)對(duì)象狀態(tài)改變發(fā)送一個(gè)通知汞贸,所有對(duì)它進(jìn)行觀察的對(duì)象根據(jù)各自的要求做出相應(yīng)的改變绳军。

觀察者模式下有兩個(gè)機(jī)制

1.notifition機(jī)制

在通知機(jī)制中對(duì)某個(gè)通知感興趣的所有對(duì)象都可以成為接受者。首先著蛙,這些對(duì)象需要向通知中心(NSNotificationCenter)發(fā)出addObserver:selector:name:object:消息進(jìn)行注冊(cè)删铃,在投送對(duì)象投送通知送給通知中心時(shí),通知中心就會(huì)把通知廣播給注冊(cè)過的接受者踏堡。所有的接受者不知道通知是誰投送的猎唁,不去關(guān)心它的細(xì)節(jié)。投送對(duì)象和接受者是一對(duì)多的關(guān)系顷蟆。接受者如果對(duì)通知不再關(guān)注诫隅,會(huì)給通知中心發(fā)送removeObserver:name:Object:消息解除注冊(cè),以后不再接受通知帐偎。(ps:這段話內(nèi)容摘抄自MexiQQ的博客

2.KVO機(jī)制(Key-Value-Observing)

KVO和notifition機(jī)制一樣逐纬,都是用來觀察某一對(duì)象的改變,自身做出相應(yīng)的改變削樊,不同的是該機(jī)制下觀察者的注冊(cè)是在被觀察者的內(nèi)部進(jìn)行的豁生,不同于通知機(jī)制(由觀察者自己注冊(cè)),需要被觀察者和觀察者同時(shí)實(shí)現(xiàn)一個(gè)協(xié)議:NSKeyValueObserving漫贞,被觀察者通過addObserver:forKeypath:options:context方法注冊(cè)觀察者甸箱,以及要被觀察的屬性。

四迅脐、委托模式

委托模式就是一個(gè)類創(chuàng)建一個(gè)委托(代理方法/也叫協(xié)議)并且擁有一個(gè)代理的對(duì)象的指針芍殖,代理對(duì)象只需要遵循協(xié)議,并實(shí)現(xiàn)協(xié)議中的方法谴蔑,這樣就完成了委托模式豌骏,通過委托模式可以實(shí)現(xiàn)類與類之間的傳值(回調(diào)傳值),舉個(gè)例子(原理)比如說一個(gè)廣播站需要發(fā)送一條廣播隐锭,它就創(chuàng)建一條協(xié)議(能播放它這個(gè)頻段的廣播的收音機(jī)并播放這段廣播)通過這條協(xié)議把廣播傳送出去窃躲,所有的收音機(jī),只要有能接收它這個(gè)頻段的收音機(jī)都能成為廣播站的代理對(duì)象钦睡,只要播放這個(gè)廣播那么久完成了委托模式框舔。同樣也可以用這個(gè)方法實(shí)現(xiàn)回調(diào)。比如小明媽媽委托小明打醬油,小明向媽媽要跑腿費(fèi)刘绣。登錄界面和注冊(cè)界面的回調(diào)傳值。



最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末挣输,一起剝皮案震驚了整個(gè)濱河市纬凤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌撩嚼,老刑警劉巖停士,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異完丽,居然都是意外死亡恋技,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門逻族,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蜻底,“玉大人,你說我怎么就攤上這事聘鳞”「ǎ” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵抠璃,是天一觀的道長站楚。 經(jīng)常有香客問我,道長搏嗡,這世上最難降的妖魔是什么窿春? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮采盒,結(jié)果婚禮上旧乞,老公的妹妹穿的比我還像新娘。我一直安慰自己纽甘,他們只是感情好良蛮,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著悍赢,像睡著了一般决瞳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上左权,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天皮胡,我揣著相機(jī)與錄音,去河邊找鬼赏迟。 笑死屡贺,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播甩栈,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼泻仙,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了量没?” 一聲冷哼從身側(cè)響起玉转,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎殴蹄,沒想到半個(gè)月后究抓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡袭灯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年刺下,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片稽荧。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡橘茉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蛤克,到底是詐尸還是另有隱情捺癞,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布构挤,位于F島的核電站髓介,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏筋现。R本人自食惡果不足惜唐础,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望矾飞。 院中可真熱鬧一膨,春花似錦、人聲如沸洒沦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽申眼。三九已至瞒津,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間括尸,已是汗流浹背巷蚪。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留濒翻,地道東北人屁柏。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓啦膜,卻偏偏與公主長得像,于是被迫代替她去往敵國和親淌喻。 傳聞我的和親對(duì)象是個(gè)殘疾皇子僧家,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

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