前言:
Java 中一般認為有 23 種設計模式,我們不需要所有的都會,但是其中常用的幾種設計模式應該去掌握。下面列出了所有的設計模式。雖然不需要全會,當然能掌握的越多越好。
總體來說設計模式分為三大類:
創建型模式
- 工廠方法模式
- 抽象工廠模式
- 單例模式
- 建造者模式
- 原型模式。
結構型模式
- 適配器模式
- 裝飾器模式
- 代理模式
- 外觀模式
- 橋接模式
- 組合模式
- 享元模式
行為型模式
- 策略模式
- 模板方法模式
- 觀察者模式
- 迭代子模式
- 責任鏈模式
- 命令模式
- 備忘錄模式
- 狀態模式
- 訪問者模式
- 中介者模式
- 解釋器模式
由於篇幅的限制,沒有辦法把23種設計模式全部詳細的分享給大家,但是整理成了Pdf資料可以分享,需要獲取《Java設計模式》的pdf文檔幫忙轉發分享此文然後再關注我私信回覆“設計模式”獲取資料領取方式吧!
1、單例模式
單例模式有 3 個特點:
- 單例類只有一個實例對象;
- 該單例對象必須由單例類自行創建;
- 單例類對外提供一個訪問該單例的全局訪問點
- 單例模式的結構
單例模式的主要角色如下。
- 單例類:包含一個實例且能自行創建這個實例的類。
- 訪問類:使用單例的類。
- 單例模式的實現
Singleton 模式通常有兩種實現形式。
第 1 種:懶漢式單例
該模式的特點是類加載時沒有生成單例,只有當第一次調用 getlnstance 方法時才去創建這個單例。代碼如下:
第 2 種:餓漢式單例
該模式的特點是類一旦加載就創建一個單例,保證在調用 getInstance 方法之前單例已經存在了。
2、適配器模式(Adapter模式)
該模式的主要優點如下。
- 客戶端通過適配器可以透明地調用目標接口。
- 複用了現存的類,程序員不需要修改原有代碼而重用現有的適配者類。
- 將目標類和適配者類解耦,解決了目標類和適配者類接口不一致的問題。
其缺點是:對類適配器來說,更換適配器的實現過程比較複雜。
- 模式的結構與實現
- 類適配器模式可採用多重繼承方式實現,如 C++ 可定義一個適配器類來同時繼承當前系統的業務接口和現有組件庫中已經存在的組件接口;
- Java 不支持多繼承,但可以定義一個適配器類來實現當前系統的業務接口,同時又繼承現有組件庫中已經存在的組件。
對象適配器模式可釆用將現有組件庫中已經實現的組件引入適配器類中,該類同時實現當前系統的業務接口。現在來介紹它們的基本結構。
適配器模式(Adapter)包含以下主要角色。
- 目標(Target)接口:當前系統業務所期待的接口,它可以是抽象類或接口。
- 適配者(Adaptee)類:它是被訪問和適配的現存組件庫中的組件接口。
- 適配器(Adapter)類:它是一個轉換器,通過繼承或引用適配者的對象,把適配者接口轉換成目標接口,讓客戶按目標接口的格式訪問適配者。
類適配器模式的結構圖:
對象適配器模式的結構圖:
- 模式的實現
(1) 類適配器模式的代碼如下。
程序的運行結果如下:
<code>類適配器模式測試:
適配者中的業務代碼被調用!/<code>
(2)對象適配器模式的代碼如下。
說明:對象適配器模式中的“目標接口”和“適配者類”的代碼同類適配器模式一樣,只要修改適配器類和客戶端的代碼即可。
程序的運行結果如下:
<code>對象適配器模式測試:
適配者中的業務代碼被調用!/<code>
3、中介者模式
中介者(Mediator)模式的定義:定義一箇中介對象來封裝一系列對象之間的交互,使原有對象之間的耦合鬆散,且可以獨立地改變它們之間的交互。中介者模式又叫調停模式,它是迪米特法則的典型應用。
- 中介者模式是一種對象行為型模式,其主要優點如下。
- 降低了對象之間的耦合性,使得對象易於獨立地被複用。
- 將對象間的一對多關聯轉變為一對一的關聯,提高系統的靈活性,使得系統易於維護和擴展。
- 其主要缺點是:
- 當同事類太多時,中介者的職責將很大,它會變得複雜而龐大,以至於系統難以維護。
模式的結構與實現
- 模式的結構
- 抽象中介者(Mediator)角色:它是中介者的接口,提供了同事對象註冊與轉發同事對象信息的抽象方法。
- 具體中介者(ConcreteMediator)角色:實現中介者接口,定義一個 List 來管理同事對象,協調各個同事角色之間的交互關係,因此它依賴於同事角色。
- 抽象同事類(Colleague)角色:定義同事類的接口,保存中介者對象,提供同事對象交互的抽象方法,實現所有相互影響的同事類的公共功能。
- 具體同事類(Concrete Colleague)角色:是抽象同事類的實現者,當需要與其他同事對象交互時,由中介者對象負責後續的交互。
中介者模式的結構圖
- 模式的實現
程序的運行結果如下:
<code>具體同事類1發出請求。
具體同事類2收到請求。
-------------
具體同事類2發出請求。
具體同事類1收到請求。/<code>
《Java設計模式》PDF 目錄
1、接口型模式
2、責任型模式
3、構造型模式
4、操作型模式
5、擴展型模式
總目錄
由於篇幅的限制,沒有辦法把23種設計模式全部詳細的分享給大家,但是整理成了Pdf資料可以分享,需要獲取《Java設計模式》的pdf文檔幫忙轉發分享此文然後再關注我私信回覆“設計模式”獲取資料領取方式吧!
閱讀更多 三年起步 的文章