當前位置:首頁 » 編程語言 » 常用java設計模式

常用java設計模式

發布時間: 2025-03-30 15:33:01

A. java中常用的設計模式有哪些請詳細說明一下工廠模式。

一共23種設計模式!

引用《軟體秘笈-設計模式那點事》書籍:

按照目的來分,設計模式可以分為創建型模式、結構型模式和行為型模式。
創建型模式用來處理對象的創建過程;結構型模式用來處理類或者對象的組合;行為型模式用來對類或對象怎樣交互和怎樣分配職責進行描述。

創建型模式用來處理對象的創建過程,主要包含以下5種設計模式:
 工廠方法模式(Factory Method Pattern)
 抽象工廠模式(Abstract Factory Pattern)
 建造者模式(Builder Pattern)
 原型模式(Prototype Pattern)
 單例模式(Singleton Pattern)

結構型模式用來處理類或者對象的組合,主要包含以下7種設計模式:
 適配器模式(Adapter Pattern)
 橋接模式(Bridge Pattern)
 組合模式(Composite Pattern)
 裝飾者模式(Decorator Pattern)
 外觀模式(Facade Pattern)
 享元模式(Flyweight Pattern)
 代理模式(Proxy Pattern)

行為型模式用來對類或對象怎樣交互和怎樣分配職責進行描述,主要包含以下11種設計模式:
 責任鏈模式(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)

抽象工廠模式(Abstract Factory Pattern)提供了一個介面,用於創建相關或者依賴對象的家族,而不需要指定具體實現類。
抽象工廠模式允許客戶使用抽象介面來創建一組相關的產品,客戶類和工廠類分開,客戶需要任何產品的時候,只需要向工廠請求即可,客戶無須修改就可以獲得新產品。這樣一來,客戶就從具體產品中解耦。

詳情請參考書籍《軟體秘笈:設計模式那點事》,裡面講解的23中設計模式例子很生動,容易理解,還有JDK中設計模式應用情況,看了收獲挺大的!好東西大家一起分享!
祝你早日學會設計模式!

B. java設計模式都有哪些(java的設計模式有哪些)

一、創建型模式
1. 工廠方法模式(Factory Method Pattern):定義一個用於創建對象的介面,讓子類決定實例化哪一個類。工廠方法模式使一個類的實例化延遲到其子類。
2. 抽象工廠模式(Abstract Factory Pattern):提供一個介面,用於創建相關或依賴對象的家族,而不需要明確指定具體類。
3. 建造者模式(Builder Pattern):將一個復雜對象的構建與其表示分離,使得同樣的構建過程可以創建不同的表示。
4. 原型模式(Prototype Pattern):用原型實例指定創建對象的種類,並且通過拷貝這些原型創建新的對象。
5. 單例模式(Singleton Pattern):確保一個類只有一個實例,並提供一個全局訪問點。
二、結構型模式
1. 適配器模式(Adapter Pattern):允許將一個類的介面轉換成客戶期望的另一個介面。適配器模式使得原本介面不兼容的類可以一起工作。
2. 橋接模式(Bridge Pattern):將抽象部分與實現部分分離,使它們都可以獨立地變化。
3. 組合模式(Composite Pattern):將對象組合成樹形結構以表示「部分-整體」的層次結構。組合模式使用戶對單個對象和組合對象的使用具有一致性。
4. 裝飾者模式(Decorator Pattern):動態地給一個對象添加一些額外的職責。就增加新功能來說,裝飾者模式比生成子類更為靈活。
5. 外觀模式(Facade Pattern):提供了一個統一的介面,用來訪問子系統中的一群介面。外觀定義了一個高層介面,讓子系統更容易使用。
6. 享元模式(Flyweight Pattern):運用共享技術有效地支持大量細粒度的對象。
7. 代理模式(Proxy Pattern):為其他對象提供一個代理以控制對這個對象的訪問。
三、行為型模式
1. 責任鏈模式(Chain of Responsibility Pattern):使多個對象都有機會處理請求,從而避免請求的發送者和接收者之間的耦合關系。
2. 命令模式(Command Pattern):將請求封裝為一個對象,從而使用戶可以使用不同的請求對客戶端進行參數化。
3. 解釋器模式(Interpreter Pattern):為語言創建解釋器。解釋器模式定義了文法的一個解釋器,該解釋器使用解釋器模式將輸入的句子翻譯成抽象語法樹,並加以解釋。
4. 迭代器模式(Iterator Pattern):提供一種方法順序訪問一個聚合對象中各個元素,而又不暴露其內部的表示。
5. 中介者模式(Mediator Pattern):定義一個對象來封裝一組對象之間的交互。中介者使各對象不需要顯式地相互引用,從而降低它們之間的耦合。
6. 備忘錄模式(Memento Pattern):捕獲一個對象的內部狀態,並在該對象之外保存這個狀態,以便稍後恢復它。
7. 觀察者模式(Observer Pattern):對象間的一對多依賴關系,當一個對象改變狀態,所有依賴於它的對象都會得到通知並自動更新。
8. 狀態模式(State Pattern):允許一個對象在其內部狀態改變時改變它的行為。
9. 策略模式(Strategy Pattern):定義一系列演算法,將每一個演算法封裝起來,並使它們可以相互替換。
10. 模板方法模式(Template Method Pattern):在一個方法中定義一個演算法的骨架,將一些步驟延遲到子類中實現。
11. 訪問者模式(Visitor Pattern):表示一個作用於某對象結構中的各元素的操作,它使你可以在不改變各元素類的前提下定義作用於這些元素的新操作。
《軟體秘笈:設計模式那點事》是一本關於設計模式的好書,書中包含了23種設計模式的生動例子,易於理解。書中還介紹了JDK中設計模式的應用情況,對學習設計模式非常有幫助。網路搜索「設計模式」,第一條結果就是該書的介紹,瀏覽量超過20萬,值得一讀。

C. 簡述JAVA的幾種設計模式

JAVA編程中,設計模式的使用能夠顯著提升代碼的復用性和可維護性。設計模式大致可以分為三種類型:創建型模式、結構型模式和行為型模式。其中,創建型模式涵蓋了工廠方法模式、抽象工廠模式、單例模式、建造者模式和原型模式,它們主要用於對象的創建過程,旨在減少對象創建的復雜性。

結構型模式則包括適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式和享元模式。這些模式專注於類和對象的組合方式,通過不同的方式將類和對象組合在一起,以實現更復雜的功能。

行為型模式則有策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式和解釋器模式。這些模式關注的是對象之間的交互和職責分配,以及在不同的場景下如何執行特定的行為。

具體來說,工廠方法模式提供了一種創建對象的方式,通過將對象的實例化過程延遲到子類中,使得子類可以根據需要選擇合適的實現。抽象工廠模式則是工廠方法模式的進一步抽象,它提供了一種創建多個相關或依賴對象的介面,而無需指定它們具體的類。

單例模式確保一個類只有一個實例,並提供一個全局訪問點。建造者模式則將一個復雜的對象的構建過程解耦,使得相同構建過程可以創建不同的對象表示。原型模式通過復制現有的對象來創建新的對象,而不需要知道其具體的類。

適配器模式通過轉換介面來實現類的復用,使得原本不兼容的介面可以協同工作。裝飾器模式則是在不改變對象結構的前提下,動態地給對象添加新的功能。代理模式提供了一種方法來控制對其他對象的訪問,如遠程代理、虛擬代理等。

外觀模式為子系統提供了一個統一的介面,簡化子系統的使用。橋接模式將抽象部分與實現部分分離,使它們可以獨立變化。組合模式允許以樹形結構表示對象的層次結構,使得用戶對單個對象和組合對象的使用具有一致性。

享元模式通過共享技術來有效地支持大量細粒度的對象。策略模式定義了一系列演算法,並將每個演算法封裝起來,使它們可以互換。模板方法模式則定義了一個操作中的演算法骨架,而將一些步驟延遲到子類中實現,使得子類可以不改變一個演算法的結構即可重定義該演算法的某些特定步驟。

觀察者模式允許對象之間以一種松耦合的方式進行交互,一個對象的狀態改變會自動通知所有依賴它的對象。迭代子模式則定義了一個用於訪問聚合對象元素的介面,而不暴露其內部表示。責任鏈模式允許請求的發送者和接收者解耦,通過沿著處理者鏈傳遞請求,直到有一個處理者處理它為止。

命令模式將一個請求封裝成一個對象,使得請求可以被參數化和隊列化。備忘錄模式允許一個對象在不破壞封裝性的前提下保存和恢復其內部狀態。狀態模式允許對象在內部狀態改變時改變其行為。訪問者模式允許在不修改現有類的情況下向對象結構添加新的操作。

中介者模式定義了一個中介對象來簡化原有對象之間的交互,而解釋器模式則通過定義一個語言的文法,使得該語言可以被解釋器執行。

D. Java中常用的設計模式有哪些請詳細說明一下工廠模式。

1.單例模式(有的書上說叫單態模式其實都一樣)
該模式主要目的是使內存中保持1個對象
2.工廠模式
該模式主要功能是統一提供實例對象的引用。看下面的例子:
public class Factory{
public ClassesDao getClassesDao(){
ClassesDao cd = new ClassesDaoImpl();
return cd;
}
}
interface ClassesDao{
public String getClassesName();
}
class ClassesDaoImpl implements ClassesDao {
public String getClassesName(){
System.out.println("A班");
}
}
class test
{
public static void main(String[] args){
Factory f = new Factory();
f.getClassesDao().getClassesName();
}
}
這個是最簡單的例子了,就是通過工廠方法通過介面獲取對象的引用
3.建造模式
該模式其實就是說,一個對象的組成可能有很多其他的對象一起組成的,比如說,一個對象的實現非常復雜,有很多的屬性,而這些屬性又是其他對象的引用,可能這些對象的引用又包括很多的對象引用。封裝這些復雜性,就可以使用建造模式。
4.門面模式
這個模式個人感覺像是Service層的一個翻版。比如Dao我們定義了很多持久化方法,我們通過Service層將Dao的原子方法組成業務邏輯,再通過方法向上層提供服務。門面模式道理其實是一樣的。
5.策略模式
這個模式是將行為的抽象,即當有幾個類有相似的方法,將其中通用的部分都提取出來,從而使擴展更容易。

E. JAVA23種設計模式介紹以及應用場景

JAVA中的23種設計模式分為創建型、結構型和行為型三類,以下是它們的介紹及應用場景

一、創建型模式

1. 單例模式 介紹:確保一個類只有一個實例,並提供一個全局訪問點。 應用場景:適用於需要控制實例數量的類,如線程池、配置管理器等。

2. 工廠方法模式 介紹:定義一個創建對象的介面,但由子類決定實例化哪個類。 應用場景:適用於需要創建對象但不指定具體類的場景,如根據不同條件創建不同類型的對象。

3. 抽象工廠模式 介紹:提供一個創建一系列相關或相互依賴對象的介面,而無需指定它們具體的類。 應用場景:適用於需要創建多個相關對象的場景,且這些對象的創建具有相關性或約束性。

4. 建造者模式 介紹:將一個復雜對象的構建過程與其表示分離,使得同樣的構建過程可以創建不同的表示。 應用場景:適用於需要逐步構建復雜對象的場景,如生成具有多種屬性的對象。

5. 原型模式 介紹:用原型實例指定創建對象的種類,並通過拷貝這些原型創建新的對象。 應用場景:適用於需要創建大量相似對象的場景,且對象的創建開銷較大。

二、結構型模式

1. 適配器模式 介紹:將一個類的介面轉換成客戶希望的另外一個介面,使原本不兼容的類可以一起工作。 應用場景:適用於需要將一個類的介面轉換為另一個不兼容介面的場景。

2. 代理模式 介紹:為其他對象提供一種代理以控制對這個對象的訪問。 應用場景:適用於需要控制對對象的訪問、實現遠程調用或延遲載入等場景。

3. 裝飾器模式 介紹:動態地給一個對象添加一些額外的職責,就增加功能來說,裝飾器模式比生成子類更為靈活。 應用場景:適用於需要在不修改原有類代碼的情況下,為對象添加額外功能的場景。

4. 橋接模式 介紹:將抽象部分與實現部分分離,使它們都可以獨立地變化。 應用場景:適用於抽象和實現之間需要獨立變化的場景,如多種抽象類對應多種實現類。

5. 外觀模式 介紹:提供一個統一的介面,用來訪問子系統中的一群介面。外觀模式定義了一個高層介面,讓子系統更容易使用。 應用場景:適用於需要將復雜系統的介面簡化,以便客戶端使用的場景。

6. 享元模式 介紹:運用共享技術有效地支持大量細粒度的對象。 應用場景:適用於需要創建大量相同或相似對象的場景,且這些對象的存儲開銷較大。

7. 組合模式 介紹:將對象組合成樹形結構以表示「部分整體」的層次結構。組合模式使得用戶對單個對象和組合對象的使用具有一致性。 應用場景:適用於需要表示對象之間「部分整體」關系的場景,如文件系統、組織結構等。

三、行為型模式

1. 策略模式 介紹:定義一系列的演算法,把它們一個個封裝起來,並且使它們可互相替換。本模式使得演算法可獨立於使用它的客戶而變化。 應用場景:適用於需要在運行時根據條件選擇不同演算法的場景。

2. 命令模式 介紹:將一個請求封裝為一個對象,從而使你可用不同的請求對客戶進行參數化、對請求排隊或記錄請求日誌,以及支持可撤銷的操作。 應用場景:適用於需要將請求封裝為對象的場景,如實現宏命令、撤銷/重做功能等。

3. 觀察者模式 介紹:定義對象間的一種一對多的依賴關系,當一個對象改變狀態時,其所有依賴者都會收到通知並自動更新。 應用場景:適用於需要在對象狀態改變時通知其他對象的場景,如事件監聽、消息發布/訂閱等。

4. 中介者模式 介紹:用一個中介對象來封裝一系列對象的交互,中介者使各對象不需要顯式地相互引用,從而使其耦合鬆散,而且可以獨立地改變它們之間的交互。 應用場景:適用於對象之間存在大量交互的場景,如聊天室、交通管理系統等。

5. 迭代器模式 介紹:提供一種方法順序訪問一個聚合對象中各個元素,而又不需暴露該對象的內部表示。 應用場景:適用於需要遍歷集合對象的場景,如數組、列表、樹等數據結構。

6. 模板方法模式 介紹:在一個方法中定義一個演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變一個演算法的結構即可重定義該演算法的某些特定步驟。 應用場景:適用於需要在父類中定義演算法骨架,而在子類中實現具體步驟的場景。

7. 狀態模式 介紹:允許對象在內部狀態改變時改變它的行為,對象看起來似乎改變了它的類。 應用場景:適用於需要根據對象狀態改變行為的場景,如有限狀態機、工作流管理等。

8. 職責鏈模式 介紹:使多個對象都有機會處理請求,從而避免請求的發送者和接收者之間的耦合關系。將這些對象連成一條鏈,並沿著這條鏈傳遞該請求,直到有一個對象處理它為止。 應用場景:適用於需要將請求沿著處理鏈傳遞,直到被某個對象處理的場景,如事件處理、許可權校驗等。

9. 訪問者模式 介紹:表示一個作用於某對象結構中的各元素的操作。它使你可以在不修改各元素的類的前提下定義作用於這些元素的新操作。 應用場景:適用於需要對對象結構中的元素進行不同操作,且這些操作需要動態擴展的場景。

10. 備忘錄模式 介紹:在不破壞封裝性的前提下,捕獲並恢復對象的內部狀態。 應用場景:適用於需要保存和恢復對象狀態的場景,如撤銷/重做功能、歷史記錄等。

了解這些設計模式的原理,並根據具體業務場景正確選擇與應用它們,能顯著提升軟體開發的效率與質量。

熱點內容
js可逆加密 發布:2025-04-01 18:06:11 瀏覽:190
解壓污游戲 發布:2025-04-01 17:45:04 瀏覽:938
python比較時間大小 發布:2025-04-01 17:43:39 瀏覽:712
安卓怎麼激活境外流量 發布:2025-04-01 17:16:17 瀏覽:805
逃跑吧少年逃跑號密碼在哪裡看 發布:2025-04-01 17:14:50 瀏覽:258
甲骨文編程 發布:2025-04-01 17:00:46 瀏覽:733
視頻彈幕能緩存嗎 發布:2025-04-01 16:42:30 瀏覽:526
javasql修改 發布:2025-04-01 16:19:22 瀏覽:805
聯通q5業務密碼多少 發布:2025-04-01 16:19:12 瀏覽:898
自然界密碼是多少 發布:2025-04-01 16:09:25 瀏覽:77