設(shè)計(jì)模式

詳細(xì)介紹請(qǐng)看這里
https://github.com/ochococo/Design-Patterns-In-Swift

創(chuàng)建型模式

創(chuàng)建型模式是處理對(duì)象創(chuàng)建的設(shè)計(jì)模式,試圖根據(jù)實(shí)際情況使用合適的方式創(chuàng)建對(duì)象感混。基本的對(duì)象創(chuàng)建方式可能會(huì)導(dǎo)致設(shè)計(jì)上的問(wèn)題礼烈,或增加設(shè)計(jì)的復(fù)雜度。創(chuàng)建型模式通過(guò)以某種方式控制對(duì)象的創(chuàng)建來(lái)解決問(wèn)題此熬。
根據(jù)不同的實(shí)際情況、場(chǎng)景或業(yè)務(wù)創(chuàng)建適合的對(duì)象

1犀忱、單例模式

單例對(duì)象的類必須保證只有一個(gè)實(shí)例存在。許多時(shí)候整個(gè)系統(tǒng)只需要擁有一個(gè)的全局對(duì)象阴汇,這樣有利于我們協(xié)調(diào)系統(tǒng)整體的行為
對(duì)于Angular單例服務(wù),服務(wù)還是那個(gè)服務(wù) 注意服務(wù)依賴注入與組件供應(yīng)商

2搀庶、工廠方法

定義一個(gè)創(chuàng)建對(duì)象的接口,但讓實(shí)現(xiàn)這個(gè)接口的類來(lái)決定實(shí)例化哪個(gè)類哥倔。工廠方法讓類的實(shí)例化推遲到子類中進(jìn)行。

3咆蒿、抽象工廠

抽象工廠模式提供了一種方式东抹,可以將一組具有同一主題的單獨(dú)的工廠封裝起來(lái)沃测。在正常使用中,客戶端程序需要?jiǎng)?chuàng)建抽象工廠的具體實(shí)現(xiàn)蒂破,然后使用抽象工廠作為接口來(lái)創(chuàng)建這一主題的具體對(duì)象。

工廠模式 根據(jù)不同的參數(shù)生產(chǎn)不同的產(chǎn)品
工廠方法模式 不同的工廠 相同的行為創(chuàng)建不同的產(chǎn)品
抽象工廠 與工廠方法模式不同之處是 可以創(chuàng)建多種產(chǎn)品

4寞蚌、原型

通過(guò)“復(fù)制”一個(gè)已經(jīng)存在的實(shí)例來(lái)返回新的實(shí)例,而不是新建實(shí)例。被復(fù)制的實(shí)例就是我們所稱的“原型”挟秤,這個(gè)原型是可定制的。
也稱克隆模式 就是深拷貝一份對(duì)象

5艘刚、生成器

一種對(duì)象構(gòu)建模式。它可以將復(fù)雜對(duì)象的建造過(guò)程抽象出來(lái)(抽象類別)攀甚,使這個(gè)抽象過(guò)程的不同實(shí)現(xiàn)方法可以構(gòu)造出不同表現(xiàn)(屬性)的對(duì)象箩朴。

行為型模式

在軟件工程中炸庞, 行為型模式為設(shè)計(jì)模式的一種類型,用來(lái)識(shí)別對(duì)象之間的常用交流模式并加以實(shí)現(xiàn)荚斯。如此,可在進(jìn)行這些交流活動(dòng)時(shí)增強(qiáng)彈性事期。

1、責(zé)任鏈模式

責(zé)任鏈模式在面向?qū)ο蟪淌皆O(shè)計(jì)里是一種軟件設(shè)計(jì)模式兽泣,它包含了一些命令對(duì)象和一系列的處理對(duì)象。每一個(gè)處理對(duì)象決定它能處理哪些命令對(duì)象唠倦,它也知道如何將它不能處理的命令對(duì)象傳遞給該鏈中的下一個(gè)處理對(duì)象称鳞。
具體處理者包含下級(jí)或上級(jí)或關(guān)聯(lián)對(duì)象的引用或指針 處理不掉的任務(wù)會(huì)傳遞給上級(jí)或下級(jí)或關(guān)聯(lián)對(duì)象處理

2胡岔、命令模式

命令模式是一種設(shè)計(jì)模式,它嘗試以對(duì)象來(lái)代表實(shí)際行動(dòng)枷餐。命令對(duì)象可以把行動(dòng)(action) 及其參數(shù)封裝起來(lái),于是這些行動(dòng)可以被:
重復(fù)多次
取消(如果該對(duì)象有實(shí)現(xiàn)的話)
取消后又再重做
游戲機(jī)方向鍵

3毛肋、解釋器

給定一種語(yǔ)言,定義他的文法的一種表示润匙,并定義一個(gè)解釋器,該解釋器使用該表示來(lái)解釋語(yǔ)言中句子孕讳。
對(duì)對(duì)象或表達(dá)式進(jìn)行分析或解釋巍膘,根據(jù)不同的解釋結(jié)果做不同的行為

4、迭代器

迭代器模式可以讓用戶通過(guò)特定的接口巡訪容器中的每一個(gè)元素而不用了解底層的實(shí)現(xiàn)芋簿。

5、中介者

用一個(gè)中介者對(duì)象封裝一系列的對(duì)象交互与斤,中介者使各對(duì)象不需要顯示地相互作用,從而使耦合松散撩穿,而且可以獨(dú)立地改變它們之間的交互。
對(duì)象之間交互通過(guò)中間對(duì)象交互食寡,類似中介 P層

6、備忘錄

在不破壞封裝性的前提下冻河,捕獲一個(gè)對(duì)象的內(nèi)部狀態(tài)箍邮,并在該對(duì)象之外保存這個(gè)狀態(tài)锭弊。這樣就可以將該對(duì)象恢復(fù)到原先保存的狀態(tài)
記住登錄密碼

7、觀察者

一個(gè)目標(biāo)對(duì)象管理所有相依于它的觀察者對(duì)象擂错,并且在它本身的狀態(tài)改變時(shí)主動(dòng)發(fā)出通知

8、狀態(tài)模式

在狀態(tài)模式中钮呀,對(duì)象的行為是基于它的內(nèi)部狀態(tài)而改變的。 這個(gè)模式允許某個(gè)類對(duì)象在運(yùn)行時(shí)發(fā)生改變爽醋。
App狀態(tài)等

9、策略模式

對(duì)象有某個(gè)行為蚂四,但是在不同的場(chǎng)景中光戈,該行為有不同的實(shí)現(xiàn)算法遂赠。策略模式:
定義了一族算法(業(yè)務(wù)規(guī)則);
封裝了每個(gè)算法跷睦;
這族的算法可互換代替(interchangeable)。

10抑诸、訪問(wèn)者模式

封裝某些作用于某種數(shù)據(jù)結(jié)構(gòu)中各元素的操作爹殊,它可以在不改變數(shù)據(jù)結(jié)構(gòu)的前提下定義作用于這些元素的新的操作。

結(jié)構(gòu)型模式

在軟件工程中結(jié)構(gòu)型模式是設(shè)計(jì)模式边灭,借由一以貫之的方式來(lái)了解元件間的關(guān)系,以簡(jiǎn)化設(shè)計(jì)健盒。

1称簿、適配器

適配器模式有時(shí)候也稱包裝樣式或者包裝(wrapper)。將一個(gè)類的接口轉(zhuǎn)接成用戶所期待的憨降。一個(gè)適配使得因接口不兼容而不能在一起工作的類工作在一起,做法是將類自己的接口包裹在一個(gè)已存在的類中授药。
多一層類的訪問(wèn), 不兼容的類工作在一起

2悔叽、橋接

橋接模式將抽象部分與實(shí)現(xiàn)部分分離莱衩,使它們都可以獨(dú)立的變化娇澎。

3、組合

將對(duì)象組合成樹形結(jié)構(gòu)以表示‘部分-整體’的層次結(jié)構(gòu)趟庄。組合模式使得用戶對(duì)單個(gè)對(duì)象和組合對(duì)象的使用具有一致性。
多個(gè)對(duì)象的相同行為可以組合在一起一起調(diào)用

4戚啥、修飾

修飾模式,是面向?qū)ο缶幊填I(lǐng)域中猫十,一種動(dòng)態(tài)地往一個(gè)類中添加新的行為的設(shè)計(jì)模式览濒。 就功能而言匾七,修飾模式相比生成子類更為靈活,這樣可以給某個(gè)對(duì)象而不是整個(gè)類添加一些功能江兢。

5、外觀

外觀模式為子系統(tǒng)中的一組接口提供一個(gè)統(tǒng)一的高層接口杉允,使得子系統(tǒng)更容易使用席里。

6、享元

使用共享物件拢驾,用來(lái)盡可能減少內(nèi)存使用量以及分享資訊給盡可能多的相似物件;它適合用于當(dāng)大量物件只是重復(fù)因而導(dǎo)致無(wú)法令人接受的使用大量?jī)?nèi)存繁疤。

7、保護(hù)代理模式

在代理模式中稠腊,創(chuàng)建一個(gè)類代表另一個(gè)底層類的功能。 保護(hù)代理用于限制訪問(wèn)架忌。

8、 虛擬代理

在代理模式中叹放,創(chuàng)建一個(gè)類代表另一個(gè)底層類的功能饰恕。 虛擬代理用于對(duì)象的需時(shí)加載井仰。

抽離API、分層糕档、擴(kuò)展、繼承速那、傳遞參數(shù)動(dòng)態(tài)創(chuàng)建俐银、傳遞對(duì)象端仰、更改屬性、更改狀態(tài)等 手法可以實(shí)現(xiàn)設(shè)計(jì)模式荔烧,沒(méi)有完美的設(shè)計(jì)模式,設(shè)計(jì)模式也有缺點(diǎn)鹤竭,要根據(jù)自己的使用場(chǎng)景、業(yè)務(wù)邏輯選擇或創(chuàng)造合適的設(shè)計(jì)模式才能達(dá)到方便的效果臀稚。因使用了設(shè)計(jì)模式吝岭,簡(jiǎn)單的邏輯會(huì)變的復(fù)雜化,復(fù)雜的邏輯會(huì)變的更清晰散劫,不要一味的強(qiáng)制使用設(shè)計(jì)模式、架構(gòu)模式获搏,要由主到次的使用。核心模塊失乾、復(fù)雜模塊要精心設(shè)計(jì),簡(jiǎn)單頁(yè)面碱茁、不常訪問(wèn)頁(yè)面要快速開發(fā),在迭代優(yōu)化早芭。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末诅蝶,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子调炬,更是在濱河造成了極大的恐慌语盈,老刑警劉巖缰泡,帶你破解...
    沈念sama閱讀 212,599評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異棘钞,居然都是意外死亡缠借,警方通過(guò)查閱死者的電腦和手機(jī)宜猜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)姨拥,“玉大人,你說(shuō)我怎么就攤上這事叫乌〔窆蓿” “怎么了憨奸?”我有些...
    開封第一講書人閱讀 158,084評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我红省,道長(zhǎng),這世上最難降的妖魔是什么国觉? 我笑而不...
    開封第一講書人閱讀 56,708評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮麻诀,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蝇闭。我一直安慰自己,他們只是感情好呻引,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,813評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著逻悠,像睡著了一般元践。 火紅的嫁衣襯著肌膚如雪童谒。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,021評(píng)論 1 291
  • 那天饥伊,我揣著相機(jī)與錄音,去河邊找鬼琅豆。 笑死,一個(gè)胖子當(dāng)著我的面吹牛趋距,可吹牛的內(nèi)容都是我干的粒氧。 我是一名探鬼主播节腐,決...
    沈念sama閱讀 39,120評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼翼雀!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起狼渊,我...
    開封第一講書人閱讀 37,866評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤类垦,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后城须,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,308評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡糕伐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,633評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了良瞧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,768評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡褥蚯,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出赞庶,到底是詐尸還是另有隱情,我是刑警寧澤歧强,帶...
    沈念sama閱讀 34,461評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站誊锭,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏弥锄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,094評(píng)論 3 317
  • 文/蒙蒙 一籽暇、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧戒悠,春花似錦熬荆、人聲如沸绸狐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,850評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至符相,卻和暖如春拆融,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背镜豹。 一陣腳步聲響...
    開封第一講書人閱讀 32,082評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留趟脂,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,571評(píng)論 2 362
  • 正文 我出身青樓散怖,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親镇眷。 傳聞我的和親對(duì)象是個(gè)殘疾皇子咬最,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,666評(píng)論 2 350