設計模式,一個一個學,等到理解後,揉碎,分散,而後修改現有項目,思考哪些能夠用到哪一個設計模式。html
就像張無忌跟張三丰學太極時,所有學會,纔是入門;所有忘掉,纔算是漸入佳境,距離成神還早着呢。ios
名稱 | 分類 | 思想 | 角色 | 示例 |
---|---|---|---|---|
簡單工廠模式 | 建立型 | 用個工廠來建立一個要求的相同種類東西 | 具體工廠類、抽象對象類、具體對象類 | Factory生產 圓、方形、橢圓、菱形 的按鈕 |
工廠方法模式 | 建立型 | 用個工廠來建立多個要求的相同種類東西 | 具體工廠類、抽象對象類、具體對象類 | Factory生產 圓、方形、橢圓、菱形 的按鈕,同時區分暗黑主題、仍是正常模式 |
抽象工廠模式 | 建立型 | 用個工廠來建立多個要求的不相同種類東西 | 抽象工廠、工廠、抽象產品多種、具體產品多種 | Factory生產 圓、方形、橢圓、菱形 的控件,同時區分暗黑主題、仍是正常模式;控件包含按鈕,UILabel、UIView、UIImageView |
建造者模式 | 建立型 | 建立一個複雜的東西 | 指揮者、抽象建造者、具體建造者、被建造的對象 | 經過KFC點餐來學習建造者模式 |
單例模式 | 建立型 | 單1、重複使用、頻繁使用 | x | XXManager,XXServer,UserDefault |
= | = | = | = | = |
適配器模式 | 結構型 | 把需適配者Adaptee,經過適配器Adapter,適配成能夠供目標TargetA、B、C、D使用 ,注意ABCD用的都是Adaptee中的一樣的功能,不是組合 | Adaptee、Adapter、Target | 經過擼一個滾動圖來學習適配器模式 |
橋接模式 | 結構型 | A想用B可是沒辦法經過繼承組合等形式達成時 | 橋接文件,這裏邊應該是極其複雜的黑盒子 | apple 提供了使用橋接的思想,一個是原生OC、Swift調用JS、另外一個是Swift調用OC;我能想到的一個示例:咱們用Swift本身去解析Lottie的json文件,而後修改裏邊的值,讓其作動畫、改變寬高、顏色 |
裝飾器模式 | 結構型 | 動態的給對象增長方法 | x | swift中面向協議編程以及extension都是這種思想 |
外觀模式 | 結構型 | 減小不一樣類之間的交互,提供統一接口 | 使用者、 外觀、子功能 | 在獲取資源類中,須要分別調用本地緩存和網絡數據,最後把這個組合結果返回;實現隔離減小不一樣類之間的交互 |
代理模式 | 結構型 | 先佔坑,異步操做 | x | 耗時操做,圖片異步加載 |
享元模式 | 結構型 | 緩存系統,緩存在內存中、大量重複使用適合顆粒度較小的東西 | x | x |
= | = | = | = | = |
命令模式 (×) | 行爲型 | 把命令抽象成對象,具體的命令對象,給外界提供接口,同時負責命令的執行 | 抽象命令類、具體命令類、調用者、接收者 | 設計模式系列 6-- 命令模式 |
中介者模式 | 行爲型 | 用一箇中介對象來封裝一系列的對象交互,中介者使各對象不須要顯式地相互引用,從而使其耦合鬆散,並且能夠獨立地改變它們之間的交互 | Mediator: 抽象中介者、ConcreteMediator: 具體中介者、Colleague: 抽象同事類、ConcreteColleague: 具體同事類 | 設計模式系列3--中介者模式 |
觀察者模式 | 行爲型 | 主動觀察到狀態改變,從而發生變化,一對多的場景 | 抽象目標 、目標、抽象觀察者、觀察者 | KVO、Notification |
狀態模式 | 行爲型 | 對象的行爲取決於狀態,環境類實際上就是擁有狀態的對象,環境類有時候能夠充當狀態管理器(State Manager)的角色,能夠在環境類中對狀態進行切換操做 | 環境類、抽象狀態類、具體狀態類 | 設計模式系列9--狀態模式。 |
策略模式 | 行爲型 | 定義一系列算法,把它們一個個的封裝起來,而且使他們能夠相互替換。策略模式使得算法可獨立於使用它的客戶端而變化 | 環境類、抽象策略類、具體策略類 | X模塊中有個分段函數,A、B、C須要X模塊支持,可是對X模塊中的分段函數有不一樣要求,這時,你能夠在X模塊中寫if、else語句、或者switch語句,但這樣違反開閉原則,因此,更好的方式是把函數算法封裝起來,做爲參數傳進去。 |
建立型模式在建立什麼(What),由誰建立(Who),什麼時候建立(When)等方面都爲軟件設計者提供了儘量大的靈活性。算法
建立型模式隱藏了類的實例的建立細節,經過隱藏對象如何被建立和組合在一塊兒達到使整個系統獨立的目的。編程
說明:建立對象時,使用到的模式json
關鍵字:build、構建、構造、建立、工廠模式swift
說明:減小不一樣類之間的交互,提供統一接口設計模式
示例:好比獲取資源類中,須要調用本地緩存、網絡數據,實現隔離減小不一樣類之間的交互緩存
代碼: https://www.raywenderlich.com/477-design-patterns-on-ios-using-swift-part-1-2#toc-anchor-007markdown
說明:經過相互通訊與協做完成某些複雜功能,一個對象在運行時也將影響到其餘對象的運行網絡
關鍵字:觀察、通知、MVC、反饋、監控
行爲型模式分爲類行爲型模式和對象行爲型模式兩種:
本文使用 mdnice 排版