相信很多剛開始接觸ios的程序員會遇到這類問題,本文小編就為大家詳細解說這6種模式應(yīng)用場景辈讶,幫助大家理清思路命浴,學(xué)好ios開發(fā)。
1
代理模式應(yīng)用場景
當一個類的某些功能需要由別的類來實現(xiàn)贱除,但是又不確定具體會是哪個類實現(xiàn)生闲。優(yōu)勢:解耦合敏捷原則:開放-封閉原則實例:tableview的數(shù)據(jù)源delegate,通過和protocol的配合月幌,完成委托訴求碍讯。列表row個數(shù)delegate自定義的delegate。
在這里我還是要推薦下我自己建的iOS開發(fā)學(xué)習(xí)群:680565220扯躺,群里都是學(xué)ios開發(fā)的捉兴,如果你正在學(xué)習(xí)ios 蝎困,小編歡迎你加入,今天分享的這個案例已經(jīng)上傳到群文件倍啥,大家都是軟件開發(fā)黨难衰,不定期分享干貨(只有iOS軟件開發(fā)相關(guān)的),包括我自己整理的一份2018最新的iOS進階資料和高級開發(fā)教程
2
觀察者模式應(yīng)用場景
一般為model層對逗栽,controller和view進行的通知方式,不關(guān)心誰去接收失暂,只負責(zé)發(fā)布信息彼宠。優(yōu)勢:解耦合敏捷原則:接口隔離原則,開放-封閉原則實例:Notification通知中心弟塞,注冊通知中心凭峡,任何位置可以發(fā)送消息,注冊觀察者的對象可以接收决记。kvo摧冀,鍵值對改變通知的觀察者,平時基本沒用過系宫。
3
MVC模式應(yīng)用場景
是一種非常古老的設(shè)計模式索昂,通過數(shù)據(jù)模型,控制器邏輯扩借,視圖展示將應(yīng)用程序進行邏輯劃分椒惨。優(yōu)勢:使系統(tǒng),層次清晰潮罪,職責(zé)分明康谆,易于維護敏捷原則:對擴展開放-對修改封閉實例:model-即數(shù)據(jù)模型,view-視圖展示嫉到,controller進行UI展現(xiàn)和數(shù)據(jù)交互的邏輯控制沃暗。
4
單例模式應(yīng)用場景
確保程序運行期某個類,只有一份實例何恶,用于進行資源共享控制孽锥。優(yōu)勢:使用簡單,延時求值细层,易于跨模塊敏捷原則:單一職責(zé)原則實例:[UIApplication sharedApplication]忱叭。注意事項:確保使用者只能通過getInstance方法才能獲得,單例類的唯一實例今艺。java男窟,C++中使其沒有公有構(gòu)造函數(shù),私有化并覆蓋其構(gòu)造函數(shù)堡称。object c中穿铆,重寫allocWithZone方法钓株,保證即使用戶用alloc方法直接創(chuàng)建單例類的實例,返回的也只是此單例類的唯一靜態(tài)變量陌僵。
5
策略模式應(yīng)用場景
定義算法族轴合,封裝起來,使他們之間可以相互替換碗短。優(yōu)勢:使算法的變化獨立于使用算法的用戶敏捷原則:接口隔離原則受葛;多用組合,少用繼承偎谁;針對接口編程总滩,而非實現(xiàn)。實例:排序算法巡雨,NSArray的sortedArrayUsingSelector闰渔;經(jīng)典的鴨子會叫,會飛案例铐望。注意事項:
1冈涧,剝離類中易于變化的行為,通過組合的方式嵌入抽象基類正蛙。
2督弓,變化的行為抽象基類為,所有可變變化的父類乒验。
3咽筋,用戶類的最終實例,通過注入行為實例的方式徊件,設(shè)定易變行為防止了繼承行為方式奸攻,導(dǎo)致無關(guān)行為污染子類。完成了策略封裝和可替換性虱痕。
6
工廠模式應(yīng)用場景
工廠方式創(chuàng)建類的實例睹耐,多與proxy模式配合,創(chuàng)建可替換代理類部翘。優(yōu)勢:易于替換硝训,面向抽象編程,application只與抽象工廠和易變類的共性抽象類發(fā)生調(diào)用關(guān)系新思。敏捷原則:DIP依賴倒置原則實例:項目部署環(huán)境中依賴多個不同類型的數(shù)據(jù)庫時窖梁,需要使用工廠配合proxy完成易用性替換注意事項:項目初期,軟件結(jié)構(gòu)和需求都沒有穩(wěn)定下來時夹囚,不建議使用此模式纵刘,因為其劣勢也很明顯,增加了代碼的復(fù)雜度荸哟,增加了調(diào)用層次假哎,增加了內(nèi)存負擔(dān)瞬捕。所以要注意防止模式的濫用。