設計模式

https://github.com/huang303513/Design-Pattern-For-iOS

http://www.reibang.com/nb/12207890

1赡模,抽象工廠:UIButton 的 buttonWithType 就是這種陶衅,在工廠模式中,我們在創(chuàng)建對象時不會對客戶端暴露創(chuàng)建邏輯,并且是通過使用一個共同的接口來指向新創(chuàng)建的對象。

2,責任鏈模式:

為請求創(chuàng)建了一個接收者對象的鏈鹦筹。這種模式給予請求的類型夜畴,對請求的發(fā)送者和接收者進行解耦拖刃。這種類型的設計模式屬于行為型模式。

在這種模式中贪绘,通常每個接收者都包含對另一個接收者的引用兑牡。如果一個對象不能處理該請求,那么它會把相同的請求傳給下一個接收者税灌,依此類推均函。

3,外觀模式:

為子系統(tǒng)中的一組接口提供一個一致的界面菱涤,此模式定義了一個高層接口苞也,這個接口使得這一子系統(tǒng)更加容易使用。

4粘秆,迭代器模式:

提供一種方法順序訪問一個聚合對象中各個元素, 而又無須暴露該對象的內部表示如迟。

角色1,迭代器接口(協(xié)議): 定義了訪問遍歷元素的方法(標準)

角色2攻走,具體迭代器殷勘,

實現遍歷元素的方法

角色3,容器接口(協(xié)議)

定義元素的儲存方法

角色4昔搂,具體容器

實現了儲存元素的方法

5劳吠,命令模式:(Command Pattern)是一種數據驅動的設計模式,它屬于行為型模式巩趁。請求以命令的形式包裹在對象中,并傳給調用對象淳附。調用對象尋找可以處理該命令的合適的對象议慰,并把該命令傳給相應的對象,該對象執(zhí)行命令奴曙。

NSInvocation别凹, target-action

優(yōu)點:對請求排隊,或記錄請求日志洽糟,以及支持撤銷操作

https://github.com/Dzhijian/ZJDesignPatternStudy

角色1,,接口(聲明一個接口方法炉菲,),2,接受者(實現一個方法)坤溃,3,具體命令(1拍霜,持有接受者,2實現具體接口方法), 4,請求者(1薪介,執(zhí)行命令祠饺,2,保存所有命令操作汁政,可以撤回)

動態(tài)命令道偷,泛型命令缀旁,復合命令,閉包命令勺鸦,多線程并發(fā)

6并巍,適配器模式(https://github.com/GanggangGao/Designpatterns

將一個類的接口轉換成客戶希望的另外一個接口。適配器模式使得原本由于接口不兼容而不能一起工作的那些類可以一起工作换途。

適用場景:

1懊渡,接口不兼容

2,可以重復使用的類怀跛,用于一些沒有關聯的類一起工作

3距贷,統(tǒng)一輸出接口,輸入類型無法確定

角色1: 適配器

角色2:目標接口

角色3: 被適配者

實際開發(fā)中:tableview

類適配器要繼承被適配者

對象適配器要持有被適配者

7吻谋,工廠模式

角色1忠蝗,抽象產品

角色2,具體產品

角色3漓拾,抽象工廠

角色4阁最,具體工廠

8, 策略模式

  • 1骇两,定義了一系列算法

  • 2速种,每個算法單獨封裝

  • 3,每個算法可以相互替換

  • 4低千,客戶端可以獨立變化算法

角色1配阵,策略接口

角色2,具體策略

角色3示血,策略上下文(管理器)

9棋傍, 構建者模式

將一個復雜對象的創(chuàng)建和表示進行分離,同時你的創(chuàng)建順序不一樣难审,表示也不一樣瘫拣。使用多個簡單的對象一步一步構建成一個復雜的對象

角色1,抽象產品

角色2告喊,具體產品

角色3麸拄,抽象構建者

角色4,具體構建者

角色5黔姜,統(tǒng)一組裝類

10拢切,模板模式

定義一個操作中的算法的骨架,而將一些步驟延遲到子類中秆吵。模板方法使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟失球。

角色1,抽象類(控制流程)

角色2,具體模板實現類(可以復寫其中的一些步驟)

11实苞, 觀察者模式

當對象間存在一對多關系時豺撑,則使用觀察者模式(Observer Pattern)。比如黔牵,當一個對象被修改時聪轿,則會自動通知它的依賴對象。觀察者模式屬于行為型模式猾浦。

角色1陆错,被觀察者

角色2,具體被觀察者

角色3金赦,觀察者

角色4音瓷,具體觀察者

12,原型模式

用原型實例指定創(chuàng)建對象的種類夹抗,并且通過拷貝這些原型創(chuàng)建新的對象绳慎。

角色1,克隆接口

角色2漠烧,具體實現類

案例1杏愤,淺拷貝

適用于值類型,結構體

13已脓,享元模式

運用共享技術有效地支持大量細粒度的對象珊楼。(需要緩存的地方)

角色1,享元對象接口

角色2度液,具體享元對象

角色3厕宗,享元工廠

14,組合模式

將對象組合成樹形結構以表示"部分-整體"的層次結構堕担。組合模式使得用戶對單個對象和組合對象的使用具有一致性媳瞪。

角色1,抽象根節(jié)點

角色2照宝,具體子節(jié)點

UIView

注意點:根節(jié)點一定有數組存兒子節(jié)點

15,備忘錄模式

所謂備忘錄模式就是在不破壞封裝的前提下句葵,捕獲一個對象的內部狀態(tài)厕鹃,并在該對象之外保存這個狀態(tài),這樣可以在以后將對象恢復到原先保存的狀態(tài)乍丈。

角色1剂碴,創(chuàng)建一個備忘錄,可以恢復或記錄內部狀態(tài)

角色2轻专,備忘錄角色忆矛,用于存儲角色1的內部狀態(tài),并可以防止角色1以外的對象訪問角色2

角色3,負責存儲備忘錄

16催训,狀態(tài)模式

允許對象在內部狀態(tài)發(fā)生改變時改變它的行為洽议,對象看起來好像修改了它的類。

角色1漫拭,抽象狀態(tài)

角色2亚兄,具體狀態(tài)

角色3,狀態(tài)管理器(上下文)

17采驻,責任鏈模式

避免請求發(fā)送者與接收者耦合在一起审胚,讓多個對象都有可能接收請求,將這些對象連接成一條鏈礼旅,并且沿著這條鏈傳遞請求膳叨,直到有對象處理它為止。

18痘系,解析器模式

角色1菲嘴,抽象表達式

角色2,終結符表達式

角色3碎浇,非終結符表達式

角色4临谱,解析器上下文

19,橋接模式

將抽象部分與實現部分分離,使它們都可以獨立的變化奴璃。

角色1悉默, 抽象部分

角色2,具體抽象部分

角色3苟穆,抽象實現部分

角色4抄课,實現具體部分功能

20,訪問者模式

需要對一個對象結構中的對象進行很多不同的并且不相關的操作雳旅,而需要避免讓這些操作"污染"這些對象的類跟磨,使用訪問者模式將這些封裝到類中。

意圖:主要將數據結構與數據操作分離攒盈。

角色1抵拘,接口或者抽象類

作用:定義了每一個元素的訪問行為

角色2,具體的訪問者

作用:給出每個元素訪問時的具體行為

角色3型豁,元素接口

角色4僵蛛,具體元素

角色5,定義了我們所提到的對象結構

21迎变,外觀模式

隱藏系統(tǒng)的復雜性充尉,并向客戶端提供了一個客戶端可以訪問系統(tǒng)的接口,這個接口使得這一子系統(tǒng)更加容易使用衣形。

角色1驼侠,系統(tǒng)對外接口

角色2,子系統(tǒng)接口

22,中介者模式(MVP)

用一個中介對象來封裝一系列的對象交互倒源,中介者使各對象不需要顯式地相互引用苛预,從而使其耦合松散,而且可以獨立地改變它們之間的交互相速。

角色1碟渺,抽象中介者(接口)

角色2,具體的中介者

角色3突诬,抽象的同事(接口)

角色4苫拍,具體同事

23, 代理模式

為其他對象提供一種代理以控制對這個對象的訪問。

24, 裝飾器模式

允許向一個現有的對象添加新的功能旺隙,同時又不改變其結構绒极。

一般的,我們?yōu)榱藬U展一個類經常使用繼承方式實現蔬捷,由于繼承為類引入靜態(tài)特征垄提,并且隨著擴展功能的增多,子類會很膨脹周拐。

優(yōu)點:裝飾類和被裝飾類可以獨立發(fā)展铡俐,不會相互耦合,裝飾模式是繼承的一個替代模式妥粟,裝飾模式可以動態(tài)擴展一個實現類的功能审丘。

http://www.reibang.com/p/57254e3df17f

Designpatterns

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市勾给,隨后出現的幾起案子滩报,更是在濱河造成了極大的恐慌,老刑警劉巖播急,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脓钾,死亡現場離奇詭異,居然都是意外死亡桩警,警方通過查閱死者的電腦和手機可训,發(fā)現死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來捶枢,“玉大人握截,你說我怎么就攤上這事≈埃” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵蚜厉,是天一觀的道長长已。 經常有香客問我,道長,這世上最難降的妖魔是什么术瓮? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任康聂,我火速辦了婚禮,結果婚禮上胞四,老公的妹妹穿的比我還像新娘恬汁。我一直安慰自己,他們只是感情好辜伟,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布氓侧。 她就那樣靜靜地躺著,像睡著了一般导狡。 火紅的嫁衣襯著肌膚如雪约巷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天旱捧,我揣著相機與錄音独郎,去河邊找鬼。 笑死枚赡,一個胖子當著我的面吹牛氓癌,可吹牛的內容都是我干的。 我是一名探鬼主播贫橙,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼贪婉,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了料皇?” 一聲冷哼從身側響起谓松,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎践剂,沒想到半個月后鬼譬,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡逊脯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年优质,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片军洼。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡巩螃,死狀恐怖,靈堂內的尸體忽然破棺而出匕争,到底是詐尸還是另有隱情避乏,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布甘桑,位于F島的核電站拍皮,受9級特大地震影響歹叮,放射性物質發(fā)生泄漏。R本人自食惡果不足惜铆帽,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一咆耿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧爹橱,春花似錦萨螺、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至冯键,卻和暖如春惹盼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背惫确。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工手报, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人改化。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓掩蛤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親陈肛。 傳聞我的和親對象是個殘疾皇子揍鸟,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內容