iOS 設(shè)計模式

單例

單例使用懶加載方式在第一次實例時創(chuàng)建道逗,如[NSUserDefaults standardUserDefaults]紧显,[UIApplication sharedApplication]智嚷,[UIScreen mainScreen]馍悟,[NSFileManager defaultManager]

系統(tǒng)的單例類

UIApplication

NSNotificationCenter

NSFileManager

NSUserDefaults

NSURLCache

NSHTTPCookieStorage

@interfaceLibraryAPI :NSObject+ (LibraryAPI*)sharedInstance;@end+ (LibraryAPI*)sharedInstance? {// 聲明一個靜態(tài)變量去保存類的實例狮含,確保它在類中的全局可用staticLibraryAPI *_sharedInstance =nil;// dispatch_once_t確保初始化器只執(zhí)行一次staticdispatch_once_toncePredicate;// 單例的關(guān)鍵柒傻,一旦類被初始化孝赫,初始化器不會再被調(diào)用dispatch_once(&oncePredicate, ^{? ? ? ? ? _sharedInstance = [[LibraryAPI alloc] init];? ? ? });return_sharedInstance;? }

@implementationXNShareTool/**

步驟:

1.一個靜態(tài)變量_inastance

2.重寫allocWithZone, 在里面用dispatch_once, 并調(diào)用super allocWithZone

3.自定義一個sharedXX, 用來獲取單例. 在里面也調(diào)用dispatch_once, 實例化_instance

-----------可選------------

4.如果要支持copy. 則(先遵守NSCopying協(xié)議)重寫copyWithZone, 直接返回_instance即可.

*//**第1步: 存儲唯一實例*/staticXNShareTool*_instance;/**第2步: 分配內(nèi)存孔家時都會調(diào)用這個方法. 保證分配內(nèi)存alloc時都相同*/+(id)allocWithZone:(struct_NSZone*)zone{//調(diào)用dispatch_once保證在多線程中也只被實例化一次staticdispatch_once_tonceToken;dispatch_once(&onceToken, ^{? ? ? ? ? _instance = [superallocWithZone:zone];? ? ? });return_instance;? }/**第3步: 保證init初始化時都相同*/+(instancetype)sharedTool{staticdispatch_once_tonceToken;dispatch_once(&onceToken, ^{? ? ? ? ? _instance = [[XNShareToolalloc] init];? ? ? });return_instance;? }/**第4步: 保證copy時都相同*/-(id)copyWithZone:(NSZone*)zone{return_instance;? }@end

門面模式Facade

暴露接口

裝飾器模式Decorator

常見的實現(xiàn)是Category和Delegation,

適配器模式Adapter

包裝一個對象暴露一個標(biāo)準(zhǔn)的接口红符∏啾可以使用協(xié)議的方式實現(xiàn),比如UITableViewDelegate预侯,UIScrollViewDelegate致开,NSCoding和NSCopying協(xié)議。

觀察者模式Observer

Notifications和Key-Value Observing(KVO)都是這個設(shè)計模式

備忘錄模式Memento

比如NSUserDefaults萎馅,或者用類似的方式進(jìn)行狀態(tài)保存使得再次進(jìn)入時能夠和離開時一樣双戳。可以使用UIApplicationDidEnterBackgroundNotification 這個通知去保存狀態(tài)糜芳。

命令模式

通過Target-Action機制和Invocation實現(xiàn)命令模式

MVVM?

在 MVVM 中飒货,view 和 view controller 正式聯(lián)系在一起,我們把它們視為一個組件

view 和 view controller 都不能直接引用 model峭竣,而是引用視圖模型

view model 是一個放置用戶輸入驗證邏輯塘辅,視圖顯示邏輯,發(fā)起網(wǎng)絡(luò)請求和其他代碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末皆撩,一起剝皮案震驚了整個濱河市扣墩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖呻惕,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件盘榨,死亡現(xiàn)場離奇詭異,居然都是意外死亡蟆融,警方通過查閱死者的電腦和手機草巡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來型酥,“玉大人山憨,你說我怎么就攤上這事∶趾恚” “怎么了郁竟?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長由境。 經(jīng)常有香客問我棚亩,道長,這世上最難降的妖魔是什么虏杰? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任讥蟆,我火速辦了婚禮,結(jié)果婚禮上纺阔,老公的妹妹穿的比我還像新娘瘸彤。我一直安慰自己,他們只是感情好笛钝,可當(dāng)我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布质况。 她就那樣靜靜地躺著,像睡著了一般玻靡。 火紅的嫁衣襯著肌膚如雪结榄。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天囤捻,我揣著相機與錄音臼朗,去河邊找鬼。 笑死最蕾,一個胖子當(dāng)著我的面吹牛依溯,可吹牛的內(nèi)容都是我干的老厌。 我是一名探鬼主播瘟则,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼枝秤!你這毒婦竟也來了醋拧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎丹壕,沒想到半個月后庆械,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡菌赖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年缭乘,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片琉用。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡堕绩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出邑时,到底是詐尸還是另有隱情奴紧,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布晶丘,位于F島的核電站黍氮,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏浅浮。R本人自食惡果不足惜沫浆,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望滚秩。 院中可真熱鬧件缸,春花似錦、人聲如沸叔遂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽已艰。三九已至痊末,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間哩掺,已是汗流浹背凿叠。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留嚼吞,地道東北人盒件。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像舱禽,于是被迫代替她去往敵國和親炒刁。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,512評論 2 359

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