這麼詳細的Java設計模式詳解,還不收藏起來偷著樂?

設計模式是很多程序員總結出來的優秀實踐。曾經在剛開始寫項目的時候學習過設計模式,在開發過程中,也主動或者被動的使用過。現在寫代碼雖說不會特意明確在用哪種設計模式,但潛移默化的寫出來公認的優秀實踐代碼,畢竟看的比較清爽。

為什麼再看一遍設計模式,主要有幾個原因:

第一,很多優秀的源碼基本都使用了設計模式,明確設計模式能夠更好的看源碼。

第二,很多中間件設計理念也是基於設計模式的,還有其他的語言,都有自己的設計優秀實踐。對於我來說,設計模式始於java,不止於java。

第三,有了這種規範,可以更好的和他人溝通,言簡意賅。

這麼詳細的Java設計模式詳解,還不收藏起來偷著樂?


設計模式的六大原則:

  • 單一職責原則,對擴展開放,對修改關閉。
  • 開閉原則,類的職責單一。
  • 里氏替換原則,子類可以透明替換父類。
  • 依賴倒置原則,面向接口編程。
  • 接口隔離原則,接口的職責要單一。
  • 迪米特法則,降低耦合。

六大原則是基礎,所有的設計模式都是基於這六大設計原則進行設計編程的。

二十三種設計模式

創建型:

  • 單件模式(Singleton Pattern);
  • 保證一個類僅有一個實例,並提供一個訪問它的全局訪問點。
  • 減少了內存的開銷,避免對資源的多重佔用
  • 抽象工廠(Abstract Factory);
  • 抽象工廠模式主要設計產品組的概念,就是某一個工廠生產出配套的一系列產品。
這麼詳細的Java設計模式詳解,還不收藏起來偷著樂?

  • 建造者模式(Builder);
  • 分離複雜對象的構建和表示。
  • 同樣的構建過程可以創建不同的表示。
  • 工廠方法模式(Factory Method);
  • 任何可以產生對象的方法或類,都可以稱之為工廠。
  • 工廠可以靈活的控制生產過程,定製權限、修飾、日誌。
  • 原型模式(Prototype);
  • 原型模式用的比較少,用於創建重複對象。需要實現Cloneable 可以選擇重寫clone()方法。clone分為淺克隆和深克隆。

結構型:

  • 適配器模式(Adapter Pattern);
  • 讓兩個不兼容的東西可以一起工作。
  • 橋接模式(Bridge Pattern);
  • 用於抽象化和實現化的解耦。
  • 提高了代碼的拓展性,並且可以實現代碼的動態切換。
  • 裝飾模式(Decorator Pattern);
  • 代理模式是原對象做不了那件事,必須讓代理對象去做,主導側重於代理對象
  • 組合模式(Composite Pattern);
  • 組合模式是將存在某種包含關係的數據組織在一起,典型的例子就是樹狀結構。
  • 外觀模式(Facade Pattern);
  • 把內外關係封裝起來,對外提供的接口封裝到一個類裡。由這一個類管理其他的類,對外提供一個統一的接口。這就是門面模式。
  • 享元模式(Flyweight Pattern);
  • 儘可能的讓用戶複用已經有的對象,從而避免造成反覆創建對象的資源浪費。
  • 代理模式(Proxy Pattern);
  • 代理就是,一個對象輔助另一個對象去做某件事,同時還可以增加一點輔助功能。
這麼詳細的Java設計模式詳解,還不收藏起來偷著樂?

行為型:

  • 模板方法(Template Method);
  • 一個抽象類公開定義了執行它的方法的方式/模板。它的子類可以按需要重寫方法實現,但調用將以抽象類中定義的方式進行。
  • 命令模式(Command Pattern);
  • 將請求以命令的形式包裹在對象中,並傳遞給對象,調用對象尋找到處理該命令的合適的對象,並將該命令傳遞給相應的對象,該對象執行。
  • 迭代器模式(Iterator Pattern);
  • 提供一個方法,可以順序訪問一個對象內部的各個元素,不需要知道內部構造。現在基本很少自己實現迭代器了,基本成熟的框架或者強大的JDK都會給出訪問的方法。
  • 進一步封裝對象內部的結構,讓行為和結構想耦合。
  • 觀察者模式(Observer Pattern);
  • 多個對象間存在一對多的依賴關係,當一個對象的狀態發生改變時,所有依賴於它的對象都得到通知並被自動更新。
這麼詳細的Java設計模式詳解,還不收藏起來偷著樂?

  • 解釋器模式(Interpreter Pattern);
  • 構建一種翻譯方式,將某種語言或描述翻譯成我們很好理解的語言或者描述。
  • 中介者模式(Mediator Pattern);
  • 各部門內部之間的關係也很複雜時,想添加一個新的部門進來,又要和其他部門打交道。這是我們可以抽出一個部分,讓它和其他的部門打交道。這種模式叫調停者。
  • 職責鏈模式(Chain of Responsibility Pattern);
  • 責任鏈模式裡,很多對象由每一個對象對其下家的引用而連接起來形成一條鏈。請求在這個鏈上傳遞,直到鏈上的某一個對象決定處理此請求。
  • 備忘錄模式(Memento Pattern);
  • 在不破壞對象本身結構的情況下,記錄對象的一個狀態,合適的時候可以恢復到這種狀態。
  • 策略模式(Strategy Pattern);
  • 此接口強行對實現它的每個類的對象進行整體排序。
  • 實現此接口的對象可以用作有序映射中的鍵或有序集合中的元素,無需指定比較器。
  • 訪問者模式(Visitor Pattern);
  • 在結構不變的情況下動態改變對於內部元素的動作。
  • 只適合結構固定的程序設計,當程序由增加刪除組件的操作時,visitor設計模式是不適合的。所以Visitor會被使用在編譯器和語法分析中。
  • 狀態模式(State Pattern);
  • 一個對象有不同的狀態,根據狀態不同,可能有不同的行為。
這麼詳細的Java設計模式詳解,還不收藏起來偷著樂?

這麼詳細的Java設計模式詳解,還不收藏起來偷著樂?

小結

雖然設計模式在企業的正式開發中並不能全部用到。但是,代碼的整潔與編程思路的清晰條理是一個程序員所必須的。

最後,把清華大佬的二十三種設計模式的詳細講解視頻分享給大家,希望你們可以喜歡!

獲取方式:

"


分享到:


相關文章: