設計模式是個老生常談的話題, 不同的人對此有不同的看法
- 新手可能會覺得設計模式難以理解, 并且也只與編程語言有關, 或者只與前端后端有關, 適用范圍很窄
或者就干脆覺得這玩意兒沒啥卵用, 寫了那么一大坨只是讓代碼變得復雜難懂, 不如直接復制黏貼刪刪改改來得方便 - 老手可能會覺得設計模式就是yyds, 寫代碼時不搞個什么模式就顯得太low了
不管寫什么東西都要分離出介面和實作, 搞一個戰未來的模式, 不如此無法體現出設計模式的"靈活性" - 也有人根本沒聽說過什么設計模式, 但看了些例子之后表示, "就這?"
- ......
什么是設計模式
設計模式(Design pattern)并不是什么創新性的發明, 只是對一些解決方案的歸納
就像在 "氧氣" 這個詞出現之前, 人類也是一樣可以呼吸的
針對不同場景下的問題, 開發人員使用了不同的解決方案, 經過整理歸納之后形成了針對特定場景的通用方案, 這些方案被稱為"設計模式"
設計模式六大原則
- 總則: 開放封閉原則(Open Closed Principle,OCP): 對擴展開放, 對修改關閉,即在不修改原有代碼的基礎上進行擴展
- 單一職責原則(Single Responsibility Principle,SRP): 一個類或者一個方法只有一個職責
- 里氏替換原則(Liskov Substitution Principle,LSP): 子類可以替換父類, 并保持父類的功能和特性
- 依賴倒置原則(Dependency Inversion Principle,DIP): 高層模塊不應該依賴于低層模塊, 二者都應該依賴于抽象, 而不是具體的實作細節
- 介面隔離原則(Interface Segregation Principle,ISP): 盡量使用多個專門的介面, 而不是單一的總介面
- 最少知道原則(Law of Demeter,LoD): 一個物件應該對其他物件有盡可能少的了解, 不應該直接與其他物件之間發生聯系
- 合成復用原則(Composite/Aggregate Reuse Principle,CARP): 盡量使用合成, 而不是通過繼承達到復用的目的
眾所周知四大天王有五個, 所以六大原則有七個也是很正常的事情
三大類設計模式
- 創建型模式: 關注物件的創建程序, 包括物件的實體化和組裝方式, 使得代碼更加靈活可擴展
- 結構型模式: 關注物件之間的組成和協作方式, 幫助我們將物件組合成更大的結構, 以實作更復雜的功能
- 行為型模式: 關注物件之間的互動方式和職責劃分, 使得系統中物件之間的通信更加靈活高效
二十三種設計模式
- 創建型模式
- 工廠方法模式(Factory Method Pattern)
- 抽象工廠模式(Abstract Factory Pattern)
- 單例模式(Singleton Pattern)
- 建造者模式(Builder Pattern)
- 原型模式(Prototype Pattern)
- 結構型模式
- 配接器模式(Adapter Pattern)
- 橋接模式(Bridge Pattern)
- 組合模式(Composite Pattern)
- 裝飾模式(Decorator Pattern)
- 外觀模式(Facade Pattern)
- 享元模式(Flyweight Pattern)
- 代理模式(Proxy Pattern)
- 行為型模式
- 責任鏈模式(Chain of Responsibility Pattern)
- 命令模式(Command Pattern)
- 解釋器模式(Interpreter Pattern)
- 迭代器模式(Iterator Pattern)
- 中介者模式(Mediator Pattern)
- 備忘錄模式(Memento Pattern)
- 觀察者模式(Observer Pattern)
- 狀態模式(State Pattern)
- 策略模式(Strategy Pattern)
- 模板方法模式(Template Method Pattern)
- 訪問者模式(Visitor Pattern)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/547701.html
標籤:設計模式
上一篇:KCP協議淺析
下一篇:設計模式-六大原則
