設計模式是一些非常抽象的概念,單從字面理解起來比較困難,所以對每個設計模式寫了些說明/例子來方便理解。
由于本人才疏學淺,所以有些地方我會結合iOS開發中的一些實例來說明,如有不完善/錯誤的地方,請各位大佬諒解,也歡迎各位大佬指正。謝謝!
-
代理模式 Porxy
UITableViewDelegate
我是一個委托人,我可以有一個代理人,幫我完成一些任務,我不需要關心誰是我的代理人,只要他們完成我的任務
-
單例模式 Singleton
SharedApplication
這個世界上現在只有一個你,不會出現第二個你
-
觀察者模式 Observer
Observer/Notification
你打開(注冊)App的通知,就成為了App消息(被觀察者)的(觀察者),當有新消息時,你就會受到推送(通知),沒有打開的就不會受到通知
-
責任鏈模式 Chain
一系列待響應者按照順序進行響應,直到有響應者為止
iOS事件傳遞機制,SubSubView->Subview->View
-
門面/外觀模式 Faced
組合封裝
將零件組裝成汽車,將低級方法封裝成更高級的方法
-
迭代器模式 Interator
數據庫查詢結果中next()
公司組織無償獻血,護士只需要按順序給每個人抽血就可以,不需要關心公司的組織架構是什么樣
-
原型模式 Prototype
copy方法
你有一份調查報告是通過各種調研得來的,同事有個任務也需要你的報告,你通過復?。╟opy)給他一份,讓他也可以擁有一份
-
裝飾器模式 Decorator
Extension/Catagory 拓展
一個人拿上掃帚可以打掃衛生,拿上拖把可以拖地,同事拿上掃帚和拖把,又可以掃地,又可以拖地
-
享元模式 Flyweight
UITableView重用機制
把對象放入重用池,需要的時候優先從重用池中取,重用池中沒有時,才會新建
-
解釋器模式 Interpreter
對正則表達式、SQL語句等String進行解釋
-
適配器模式 Adapter
對接口適配
-
狀態模式 State
根據不同狀態有不同的行為
錯誤展示頁根據不同的錯誤顯示不用的頁面
-
中介者模式 Mediator
解耦,通過中介實現不同類/模塊之間的通信
MGJRouter、CTMediator等三方庫
-
橋接模式 Bridge
抽象與實現解耦,可以獨立進行變化
-
策略模式 Strategy
執行方法在運行時進行更改,指定不同策略,執行不同方法
-
組合模式 Composite
部分-整體樹形結構,對部分和整體的調用保持一致
-
訪問者模式 Visitor
父類相同的子類具有同名的父類方法,在運行時根據調用對象不同來執行不同方法
-
備忘錄模式 Memento
狀態存檔
以便于撤銷/重做
-
命令模式 Command
通過發布命令來調用
將一次操作作為一個請求進行保存,以便于撤銷/重做
-
工廠模式 Factory
不調用new來新建復雜對象,而是通過工廠
一個饅頭廠可以生產饅頭
-
抽象工廠模式 Abstract Factory
一個面食廠可以生產饅頭,也可以生產面包
-
模板方法模式 Template
流程確定,可以重寫方法
-
建造者模式 Builder
方法確定,流程自由組合