搜尋
首頁JavaJava基礎簡述設計模式的概念

簡述設計模式的概念

Apr 22, 2020 am 10:08 AM
設計模式

簡述設計模式的概念

什麼是設計模式

設計模式是一套被重複使用、多數人知曉的、經過分類編目的程式碼設計經驗的總結,它與具體的語言無關,是一種思想。

掌握了物件導向的思想,才可以更好的理解設計模式,而反之亦然。

設計模式是在軟體工程實作過程中,程式設計師們總結出的良好的程式設計方法。

設計模式一共有23種。

這23種設計模式的本質是物件導向設計原則的實際運用,是對類別的封裝性、繼承性和多態性,以及類別的關聯關係和組合關係的充分理解。

(相關影片教學推薦:java影片

設計模式的分類

1、建立型模式

創建型模式(5種):單例模式,工廠方法模式,抽象工廠模式,建造者模式,原型模式。

2、結構型模式

結構型模式(7種):適配器模式,裝飾器模式,代理模式,外觀模式,橋接模式,組合模式,享元模式。

3、行為型模式

行為型模式(11種):策略模式、範本方法模式、觀察者模式、迭代子模式、責任鏈模式、指令模式、備忘錄模式、狀態模式、訪客模式、中介者模式、解釋器模式。

設計模式的六大原則

總原則:開閉原則

對擴充開放,對修改封閉。在程式需要拓展的時候,不能去修改原有的程式碼,而是要擴充原有程式碼,實現一個熱插拔的效果。所以一句話概括就是:為了讓程式的擴充性好,易於維護和升級。

想要達到這樣的效果,我們需要使用介面和抽象類別等,後面的具體設計中我們會提到這一點。

1、單一職責原則

不要存在多於一個導致類別變更的原因,也就是說每個類別應該實現單一的職責,否則就應該把類別拆分。

2、里氏替換原則(Liskov Substitution Principle)

任何基底類別可以出現的地方,子類別一定可以出現。里氏替換原則是繼承復用的基石,只有當衍生類可以替換基類,軟體單位的功能不受到影響時,基類才能真正被復用,而衍生類也能夠在基類的基礎上增加新的行為。

里氏代換原則是「開-閉」原則的補充。實現「開閉」原則的關鍵步驟就是抽象化。而基底類別與子類別的繼承關係就是抽象化的具體實現,所以里氏代換原則是實現抽象化的具體步驟的規範。在里氏替換原則中,子類別對父類別的方法盡量不要重寫和重載。因為父類代表了定義好的結構,透過這個規範的介面與外界交互,子類別不應該隨便破壞它。

3、依賴倒轉原則(Dependence Inversion Principle)

面向介面編程,依賴抽象而不依賴具體。寫程式碼時用到具體類別時,不與具體類別交互,而與具體類別的上層介面交互。

4、介面隔離原則(Interface Segregation Principle)

每個介面中不存在子類別用不到卻必須實現的方法,如果不然,就要將介面拆分。使用多個隔離的接口,比使用單一接口(多個接口方法集合到一個的接口)要好。

5、迪米特法則(最少知道原則)(Demeter Principle)

一個類別對自己依賴的類別知道的越少越好。無論被依賴的類別多麼複雜,都應該將邏輯封裝在方法的內部,透過public方法提供給外部。這樣當被依賴的類別變化時,才能最小的影響該類別。

最少知道原則的另一個表達方式是:只與直接的朋友通信。類別之間只要有耦合關係,就叫朋友關係。耦合分為依賴、關聯、聚合、組合等。我們稱出現為成員變數、方法參數、方法回傳值中的類別為直接朋友。局部變數、臨時變數則不是直接的朋友。我們要求陌生的類別不要作為局部變數出現在類別中。

6、合成復用原則(Composite Reuse Principle)

盡量先使用合成/聚合的方式,而不是使用繼承。

推薦教學:java入門

以上是簡述設計模式的概念的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境