Java設計模式總結

2021-06-18 03:41:57 字數 1982 閱讀 5596

一、策略模式

1、概念:策略模式定義了演算法族,並將演算法族封裝起來,演算法可以相互替換,演算法的變動不會影響請求該演算法的客戶。

2、使用場景:

1)在不同類需要不同行為,或者不同類需要相同行為但行為表現(內容)不同時,可以使用strategy模式。需注意,在設計繼承時需考慮是否使用策略模式,

尤其繼承中有動態行為時。

2)根據不同的情況使用不同的策略,或者策略在未來還可能用其他方式實現。

3)對客戶隱藏具體策略演算法的實現細節。

3、補充:封裝動態、多用組合少用繼承、面向介面程式設計而不是物件導向程式設計。

二、觀察者模式

1、概念:觀察者模式定義了一系列物件之間的一對多關係,當乙個物件狀態發生變化時,將會通知依賴它的多個物件。

2、使用場景:

1)「推」或「拉」資訊

2)觸發其他物件方法

3)解耦存在關係的多個物件

3、補充:為實現有關係物件之間的松耦合而努力。

繼承無法實現最有彈性和最好維護的設計,利用組合和委託可以實現在執行時具有整合行為的效果。利用繼承設計子類的行為,是在編譯時靜態決定的,而且所有子類都會繼承到相同的行為。利用組合的做法擴充套件物件的行為,可以在執行時動態的進行擴充套件。

三、裝飾者模式

1、概念:動態的給乙個物件新增一些額外的職責。

2、使用場景:

1)為某個現有物件動態增加一些功能或職責。

2)當某個物件的職責經常發生變化或經常需要動態的增加職責。

3、補充:類應該對擴充套件開放,對修改關閉。如果一段方法已經除錯好,修改好bug。新的要求再去修改,則會導致產生新的問題。對擴充套件開放,可以在不修改**的情況下就可以搭配新的行為,設計具有彈性,可以應對改變,可以接受新的功能來應對的需求。觀察者模式可以在不修改**的情況下擴充套件新的功能。開放-關閉原則應用在設計中最容易改變的地方。每個地方都採用開放-關閉原則是一種浪費,增加**複雜度。

四、工廠方法模式

1、概念:工廠方法定義了乙個建立物件的介面,但由子類決定要例項化的類是哪乙個。工廠方法讓類把例項化推遲到了子類。

2、使用場景:

1)類不知道自己要建立的是哪乙個物件。

2)類用子類建立物件。

3)將物件的建立和使用分離

3、補充:抽象倒置原則,要依賴抽象,不要依賴具體類。

五、抽象工廠模式

2、使用場景:

1)有關聯的物件需要一起應用並且它們的關係是強迫的。

2)系統需要由多個關聯的物件來組成。

3、補充:工廠方法模式隱藏在抽象工廠模式中。

六、單例模式

1、概念:確保乙個類只有乙個例項,並且提供乙個全域性訪問點。

七、命令模式

1、概念:將「請求」封裝成物件。使用不同的請求、佇列或日誌來引數化其他物件。命令模式也可支援撤銷操作。

2、使用場景:

1)命令模式與多個物件之間存在呼叫關係,封裝呼叫方法即封裝請求,隱藏具體實現,將命令者與執行者完全解耦

2)請求佇列

3)實現日誌和事務系統

3、補充:使用「聰明」命令物件,直接實現了請求,而不是將請求委託給接收者。但是呼叫者和接收者之間的解耦程度差,不能把接收者當作引數傳遞給命令。

八、介面卡模式

1、概念:將乙個介面,轉換為客戶所期望的介面,讓原本不相容的類合作無間。

2、使用場景:

九、外觀模式

1、概念:定義了乙個統一的介面,用來訪問子系統中的一群介面,簡化了子系統。

2、使用場景:

1)乙個功能訪問需要呼叫多個物件

2)客戶端程式與多個子系統之間有很大的依賴性

3、補充:最少知識原則:只和你的密友交談,減少物件之間的互動,只留幾個『密友』)。外觀模式使得使用與子系統解耦。

十、模板模式

1、概念:在乙個方法中定義了乙個演算法的骨架,並將一些步驟推遲到子類中。

2、使用場景:

1)不改變演算法結構,重新定義演算法中某些步驟

3、補充:好萊塢原則(不要呼叫(打**給)我們,等我們呼叫(打**給)你),減少物件之間的依賴腐敗。

Java 設計模式總結

本文是學習了郭霖部落格後進行的知識點總結,以便日後自己回顧使用。1.模板方法 template method 我的理解 在模板父類中定義需要完成的基本功能,子類中去區別實現。郭神的定義 定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中,模板方法使得子類可以不改變乙個演算法的結構即可重定義該演算...

JAVA常用設計模式總結

導言 設計模式常常被分為以下三類 建立型 建立物件時,不再由我們直接例項化物件 而是根據特定場景,由程式來確定建立物件的方式。如,工廠方法 抽象工廠模式 單例模式等。構造型用於幫助將多個物件組織成更大的結構。如,介面卡模式 橋接模式 組合器模式等。行為型用於幫助系統間物件的通訊,以及如何控制複雜系統...

java的設計模式總結

總體來說,工廠模式適合 凡是出現了大量的產品需要建立,並且具有共同的介面時,可以通過工廠方法模式進行建立。在以上的三種模式中,第一種如果傳入的字串有誤,不能正確建立物件,第三種相對於第二種,不需要例項化工廠類,所以,大多數情況下,我們會選用第三種 靜態工廠方法模式。抽象工廠模式,建立多個工廠類,這樣...