設計模式:介紹
概念
設計模式是一套被反覆使用的、多人知曉的、經過程式碼設計經驗的總結。類似數學中的公式一樣。
設計模式的型別
總共有23種設計模式。這些模式可以分為三大類:建立型模式、結構型模式、行為型模式。
建立型模式
這些設計模式提供了一種在建立物件的同時隱藏建立邏輯的方式,而不是使用new運算子直接例項化物件。類似封裝的思想。這使得程式在判斷針對某個給定例項需要建立哪些物件時更加靈活。
包括:工廠模式、抽象工廠模式、單例模式、建造者模式、原型模式。
結構型模式
這些設計模式關注類和物件的組合。繼承的概念被用來組合介面和定義組合物件獲得新功能的方式。
包括:介面卡模式、橋接模式、過濾器模式、組合模式、裝飾器模式、外觀模式、享元模式、代理模式。
行為型模式
這些設計模式特別關注物件之間的通訊。
包括:責任鏈模式、命令模式、直譯器模式、迭代器模式、中介者模式、備忘錄模式、觀察者模式、狀態模式、空物件模式、策略模式、模板模式、訪問者模式
六大原則
- 開閉原則:對擴充套件開放,對修改關閉。通過開閉原則,我們可以通過擴充套件行為開實現新的功能,而不是通過修改已有的程式碼。
- 里氏代換原則:所有父類可以出現的地方,子類就都可以出現,使用子類來替換父類,呼叫方不需要關心目前傳遞的父類還是子類。通過繼承,實現了程式碼的共享和複用。但是繼承是強侵入性的,子類必須擁有父類所有的非私有屬性和方法,在一定程度上降低了子類的靈活性。通過里氏替換,我們可以將子類物件作為父類物件來使用,遮蔽了不同子類物件之間的差異,寫出通用的程式碼,做出通用的程式設計,以適應需求的不斷變化。里氏替換之後,父類的物件就可以根據當前賦值給它的子類物件的特性以不同的方式運作。
- 依賴倒轉原則:高層模組不應該依賴於底層模組,抽象不應該依賴細節,細節應該依賴抽象。在java中,介面和抽象類都是抽象,而其實現類就是細節。也就是說,我們應該做到面向介面程式設計,而非面向實現程式設計。
- 介面隔離原則:使用多個隔離的介面,比使用單個介面要好。即降低類之間的耦合度。
- 迪米特法則:一個實體應當儘量少地與其他實體之間發生相互作用,使得系統功能模組相對獨立。
- 單一職責原則:單一職責規定了一個類應該只有一個發生變化的原因。如果一個類承擔了多個職責,則會導致多個職責耦合在一起。但部分職責發生變化的時候,可能會導致其餘職責跟著受到影響,也就是說我們的程式耦合性太強,不利於變化。
相關文章
- 雲設計模式介紹設計模式
- CSS設計模式介紹CSS設計模式
- java設計模式一一設計模式的簡介和介紹Java設計模式
- 設計模式的相關介紹設計模式
- JAVA設計模式 1 設計模式介紹、單例模式的理解與使用Java設計模式單例
- 設計模式:原型模式介紹 && 原型模式的深拷貝問題設計模式原型
- 模式介紹模式
- Yii2設計模式——設計模式簡介設計模式
- 原型設計工具介紹原型
- NIO程式設計介紹程式設計
- 設計模式學習筆記(八)介面卡模式介紹及其應用設計模式筆記
- Java中23種設計模式:六大設計原則的分析與介紹Java設計模式
- Shell程式設計 --- Shell介紹程式設計
- 主流原型設計工具介紹(●´ϖ`●)原型
- 主流原型設計工具介紹原型
- 23種設計模式簡介設計模式
- 墨刀——原型設計工具介紹原型
- 原型設計工具介紹——墨刀原型
- 原型設計工具—sketch的介紹原型
- Linux中Libevent程式設計介紹Linux程式設計
- Python多工程式設計介紹Python程式設計
- Java設計模式簡介(總結)Java設計模式
- AORedis哨兵模式介紹jtqRedis模式
- 觀察者模式介紹模式
- shell程式設計–bash變數介紹程式設計變數
- SAP CRM Fiori Simulation Pipeline 設計介紹
- 設計模式:裝飾者模式介紹及程式碼示例 && JDK裡關於裝飾者模式的應用設計模式JDK
- 簡單介紹常見的三種架構設計模式及其優缺點!架構設計模式
- 聊聊畢業設計系列 --- 專案介紹
- Erlang/Elixir 中的 OTP 程式設計介紹程式設計
- Linux系統程式設計之程式介紹Linux程式設計
- 005 Rust 非同步程式設計,Pin 介紹Rust非同步程式設計
- 011 Rust 網路程式設計,gRPC 介紹Rust程式設計RPC
- 006 Rust 非同步程式設計,Stream 介紹Rust非同步程式設計
- 017 Rust 網路程式設計,TFTP 介紹Rust程式設計FTP
- 015 Rust 網路程式設計,FTP 介紹Rust程式設計FTP
- 013 Rust 網路程式設計,SMTP 介紹Rust程式設計
- 005 Rust 網路程式設計,ipnet 介紹Rust程式設計