iOS開發(fā):盤點常用的幾種設計模式

(一)代理模式

應用場景:當一個類的某些功能需要由別的類來實現(xiàn),但是又不確定具體會是哪個類實現(xiàn)吏奸。

優(yōu)勢:解耦合

敏捷原則:開放-封閉原則

實例:tableview的 數(shù)據(jù)源delegate欢揖,通過和PRotocol的配合,完成委托訴求苦丁。

列表row個數(shù)delegate

自定義的delegate

(二)觀察者模式

應用場景:一般為model層對浸颓,controller和view進行的通知方式,不關心誰去接收旺拉,只負責發(fā)布信息产上。

優(yōu)勢:解耦合

敏捷原則:接口隔離原則,開放-封閉原則

實例:Notification通知中心蛾狗,注冊通知中心晋涣,任何位置可以發(fā)送消息,注冊觀察者的對象可以接收沉桌。

kvo谢鹊,鍵值對改變通知的觀察者算吩,平時基本沒用過。

(三)MVC模式

應用場景:是一中非常古老的設計模式佃扼,通過數(shù)據(jù)模型偎巢,控制器邏輯,視圖展示將應用程序進行邏輯劃分兼耀。

優(yōu)勢:使系統(tǒng)压昼,層次清晰,職責分明瘤运,易于維護

敏捷原則:對擴展開放-對修改封閉

實例:model-即數(shù)據(jù)模型窍霞,view-視圖展示,controller進行UI展現(xiàn)和數(shù)據(jù)交互的邏輯控制拯坟。

(四)單例模式

應用場景:確保程序運行期某個類但金,只有一份實例,用于進行資源共享控制郁季。

優(yōu)勢:使用簡單冷溃,延時求值,易于跨模塊

敏捷原則:單一職責原則

實例:[UIapplicationsharedApplication]巩踏。

注意事項:確保使用者只能通過 getInstance方法才能獲得秃诵,單例類的唯一實例。

java塞琼,C++中使其沒有公有構造函數(shù)菠净,私有化并覆蓋其構造函數(shù)。

object c中彪杉,重寫allocWithZone方法毅往,保證即使用戶用 alloc方法直接創(chuàng)建單例類的實例,

返回的也只是此單例類的唯一靜態(tài)變量派近。

(五)策略模式

應用場景:定義算法族攀唯,封裝起來,使他們之間可以相互替換渴丸。

優(yōu)勢:使算法的變化獨立于使用算法的用戶

敏捷原則:接口隔離原則侯嘀;多用組合,少用繼承谱轨;針對接口編程戒幔,而非實現(xiàn)。

實例:排序算法土童,NSArray的sortedArrayUsingSelector诗茎;經(jīng)典的鴨子會叫,會飛案例献汗。

注意事項:1敢订,剝離類中易于變化的行為王污,通過組合的方式嵌入抽象基類

2,變化的行為抽象基類為楚午,所有可變變化的父類

3昭齐,用戶類的最終實例,通過注入行為實例的方式醒叁,設定易變行為

防止了繼承行為方式司浪,導致無關行為污染子類。完成了策略封裝和可替換性把沼。

(六)工廠模式

應用場景:工廠方式創(chuàng)建類的實例,多與proxy模式配合吁伺,創(chuàng)建可替換代理類饮睬。

優(yōu)勢:易于替換,面向抽象編程篮奄,application只與抽象工廠和易變類的共性抽象類發(fā)生調用關系捆愁。

敏捷原則:Dip依賴倒置原則

實例:項目部署環(huán)境中依賴多個不同類型的數(shù)據(jù)庫時,需要使用工廠配合proxy完成易用性替換

注意事項:項目初期窟却,軟件結構和需求都沒有穩(wěn)定下來時昼丑,不建議使用此模式,因為其劣勢也很明顯夸赫,

增 加了代碼的復雜度菩帝,增加了調用層次,增加了內存負擔茬腿。所以要注意防止模式的濫用

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末呼奢,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子切平,更是在濱河造成了極大的恐慌握础,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件悴品,死亡現(xiàn)場離奇詭異禀综,居然都是意外死亡,警方通過查閱死者的電腦和手機苔严,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門定枷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人邦蜜,你說我怎么就攤上這事依鸥。” “怎么了悼沈?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵贱迟,是天一觀的道長姐扮。 經(jīng)常有香客問我,道長衣吠,這世上最難降的妖魔是什么茶敏? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮缚俏,結果婚禮上惊搏,老公的妹妹穿的比我還像新娘。我一直安慰自己忧换,他們只是感情好恬惯,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著亚茬,像睡著了一般酪耳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上刹缝,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天碗暗,我揣著相機與錄音,去河邊找鬼梢夯。 笑死言疗,一個胖子當著我的面吹牛,可吹牛的內容都是我干的颂砸。 我是一名探鬼主播噪奄,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼沾凄!你這毒婦竟也來了梗醇?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤撒蟀,失蹤者是張志新(化名)和其女友劉穎叙谨,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體保屯,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡手负,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了姑尺。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片竟终。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖切蟋,靈堂內的尸體忽然破棺而出统捶,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布喘鸟,位于F島的核電站匆绣,受9級特大地震影響,放射性物質發(fā)生泄漏什黑。R本人自食惡果不足惜崎淳,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望愕把。 院中可真熱鬧拣凹,春花似錦、人聲如沸恨豁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽圣絮。三九已至祈惶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間扮匠,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工凡涩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留棒搜,地道東北人。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓活箕,卻偏偏與公主長得像力麸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子育韩,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內容