java設計模式簡單大白話歸納

1工廠模式:用來創建單一產品( 生產產品的接口只有一個方法 通過不用的實現生產不同的產品)
用統一接口來完成生產類的方法 具體對象通過具體實現類來產生
類對象的方法也可以用接口定義 具體功能也是通過具體實現類產生

2抽象工廠模式:和工廠模式的區別就是用來創建多個產品(生產產品的接口可以有很多方法 每一個來生產不同的產品 不同的實現類區別在於各個產品又有不同分類)

3單利模式:
懶漢:原始標準版 —》syncronized同步式-------》雙重檢查機制 且變同步方法爲代碼塊鎖

靜態內部類:
利用了類加載機制來保證類初始化時候只有一個單例,線程安全的且沒有性能損耗

餓漢式:
浪費資源 因爲一旦類的其他靜態方法 方法被使用或者類加載了 即使沒有用到單例也會創建

特殊餓漢式---註冊登記式  存放在ConcurrentHashMap中

枚舉單例:
可以防止同步問題和反序列化

4建造者模式:通過一個專用接口實現某一類產品各個部分的組裝 並返回最終成品 可以通過一個指揮者director類來實現具體構造者構造產品的過程 提供方法返回成品
當然也是作用在接口上面的 好處就是複用

5原型模式: 就是複製對象 深淺複製 實現cloneable

6適配器模式:將某個類的接口轉換成客戶端期望的另一個接口表示,消除接口不匹配產生的兼容性問題 -------從代碼上來說本質上就是保留原有的方法與功能的基礎上拓展新的功能
(1)類的適配器:繼承原有類 實現新的接口 這樣就在原有方法基礎上 產生新的方法
(2)對象的適配器:持有原有類 實現新的接口 用原有類來完成原來的方法 同樣達成在 保留原有方法的基礎上拓展新的功能
(3)接口的適配器:
有時候我們想要用某個接口但是不想實現全部的方法就可使用-------用抽象類做中介,實現接口 具體類繼承抽象類 需要什麼方法實現什麼方法即可

7裝飾模式:給一個新的對象增加新的功能
接口提供增強方法 在抽象類中實現方法並引用同樣實現了接口的需要被增強的方法
具體增強的業務使用具體的類繼承抽象類來完成即可

8代理模式:代理原對象實現增強操作
一個代理類持有一個被代理對象 都實現同樣的接口 在代理類中完成增強操作
和裝飾的區別: 代理類的代理關係是在編譯的時候確定的 裝飾的裝飾關係是在運行時可以動態綁定的

9外觀模式:主要功能是用來解耦
用一個類來持有幾個類對象 並使用其中的方法(而不是讓這幾個類自己互相發生關係)
例如:一個computer對象操作cpu memory disk對象 來完成電腦啓動的流程工作

10橋接模式:說白了就是像jdbc一樣可以在想要換一個連接的時候直接更換相應的連接,即提供一個抽象讓我們可以在在各個對象間實現切換
定義一個抽象類 持有一個具體的接口對象
創建一個類繼承抽象類 調用抽象類的獲取對象/執行對象方法的函數
我們在使用這個類的時候 只要傳入實現了相同接口(例如jdbc數據庫連接的接口 下面可以有好幾個不同的具體數據庫的實現類)的相對應的實現類即可 想要換一個類就傳入另外一個 就可以實現動態切換了

11組合模式:將多個對象組合在一起操作 常用於樹結構

12享元模式:就是對系統中對象的共享管理 數據庫連接池就是用的這個思想

13策略模式:提供不同的策略供用戶選擇
提供一個接口 設置一個方法
提供一個抽象類 可以提供輔助方法
不同的實現類實現接口 繼承抽象類 對外提供不同的功能

14模版方法:
一個抽象類中,有一個主方法,再定義其他的方法
定義一個繼承該抽象類的類,重寫抽象方法
通過抽象類的引用,實現對子類的調用

15觀察者方法:
當某一個對象進行一定操作的時候 同時讓其他一系列對象一起進行操作 就好像一堆人觀察者你 你行動了 就讓他們也一起行動
定義一個抽象類 管理一個集合對象 並且提供
實現這個抽象類 在完成相應功能的同時去調用抽象類中對所有對象被管理對象操作的方法

16迭代子模式:
就跟java裏面的集合一樣
提供一個人類管理一個數組 擁有一個Iterator
Iterator來完成對數組的遍歷操作 hasNext previous next等的操作

17責任鏈模式:
有一條對象構成的鏈條 一個對象引用另外一個一直引用下去
用戶的請求在這條鏈條上傳播 由一個對象傳給下一個(只一個)對象 在某個地方進行處理 用戶並不知道具體哪個對象處理了請求

18命令模式:
目的是將請求和執行分開 A發出執行命令 經過B傳遞 讓C去執行
具體的實現就是 C可以是具體類 定義一個接口 讓B實現並且持有C對象 A持有B對象
19備忘錄模式:用來恢復數據
普通類 ------------備忘錄類---------------備忘錄持有類
在普通類要存儲數據的時候 生成一個備忘錄類持有原來的數據 並且加入備忘錄持有類
在想要恢復數據的時候 在備忘錄持有類中獲取這個備忘錄類來拿到原來存儲的數據

20狀態模式:
根據不同的狀態執行不同的方法
有一個狀態類
有一個類持有狀態類 提供方法 方法裏面根據狀態類的不同狀態執行狀態類相對應的方法

21訪問者模式:
分離數據結構和作用於結構上的操作
訪問者類訪問方法 裏面調用數據結構類的方法
數據結構類提供一個接受訪問者類的方法 裏面調用訪問者類的訪問方法
一旦需要訪問數據結構 就讓數據結構類去接受訪問者類 進而就可以調用訪問者類的訪問方法 — 》 數據 和 操作分離

22中介者模式:類似spring容器 用一箇中介類草管理其他類的關係 而不同讓不同類之間產生關聯 就減少耦合
中介者對象持有幾個類 並且有對應的方法 對應不同類執行了不同操作後 讓其他類執行相對應的操作
各個不同的類持有中介者對象 並且可以調用中介者對象相對應的方法
這樣當某個類執行了操作後 中介者對象就會去通知其他類 進而執行相對應的操作
例如一個設備打開後 中介者就會去打開另外兩個設備

23解釋器模式:採用已經定義好的規則 翻譯一段具體的內容
正則就是用的解釋器模式
用一個解釋器類 持有一個需要被解釋的對象 翻譯成具體的結果並輸出

發佈了66 篇原創文章 · 獲贊 44 · 訪問量 7321
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章