經典設計模式源碼詳解,用不同語言來實現,包括Java/JS/Python/TypeScript/Go等。結合實際場景,充分註釋說明,每一行代碼都經過檢驗,確保可靠。 設計模式是一個程式員進階高級的必然選擇,不懂設計模式,就像寫文章不懂得層次,蓋房子沒有結構。只有充分懂得設計之道,才能真正設計出良好的... ...
Design Pattern 23種經典設計模式源碼詳解
經典設計模式源碼詳解,用不同語言來實現,包括Java/JS/Python/TypeScript/Go等。結合實際場景,充分註釋說明,每一行代碼都經過檢驗,確保可靠。
設計模式是一個程式員進階高級的必然選擇,不懂設計模式,就像寫文章不懂得層次,蓋房子沒有結構。只有充分懂得設計之道,才能真正設計出良好的軟體和系統來。
每一種語言都有自己的特色,設計模式首推用Java語言來實現,因為Java相對最全面,也非常規整。
其他語言有自己的優勢,並不需要像Java那麼啰嗦就可以實現良好的設計模式。因此通過不同語言之間的對比,可以更好地理解各種語言的差異,真正理解編程之道。
詳細請訪問:https://github.com/microwind/design-pattern
設計模式結構圖
設計模式例子
每一個例子都經過精心設計,提供UML設計圖,作用說明以及創建步驟。
源碼例子
創建型
-
工廠模式(Factory Pattern) ,由工廠類提供統一的創建對象的方法。 Java | JavaScript | Python | TypeScript | Go
-
抽象工廠模式(Abstract Factory Pattern) ,是一個超級工廠,用來創建其他工廠方法。 Java | JavaScript | Python | TypeScript | Go
-
原型模式(Prototype Pattern) ,利用clone()複製已有對象的實例。 Java | JavaScript | Python | TypeScript | Go
-
建造者模式(Builder Pattern) ,利用多個簡單對象逐步構建一個複雜對象,類似建造房子。 Java | JavaScript | Python | TypeScript | Go
-
單例模式(Singleton Pattern) ,保證創建的類只有一個實例,並提供一個訪問該實例的全局節點。 Java | JavaScript | Python | TypeScript | Go
結構型
-
適配器模式(Adapter Pattern) ,為兩個不相容的介面提供專門相容方案。 Java | JavaScript | Python | TypeScript | Go
-
橋接模式(Bridge Pattern) ,將類拆分為抽象和實現兩個獨立的層次結構進行解耦。 Java | JavaScript | Python | TypeScript | Go
-
組合模式(Composite Pattern) ,依據樹形結構來組合對象,用不同組件來構建某個部分或整體對象。 Java | JavaScript | Python | TypeScript | Go
-
裝飾器模式(Decorator Pattern) ,將對象放入到一個特殊封裝的對象中,賦予其新的能力。 Java | JavaScript | Python | TypeScript | Go
-
外觀模式(Facade Pattern) ,給現有的系統添加一個高層介面,隱藏子系統的複雜性。 Java | JavaScript | Python | TypeScript | Go
-
享元模式(Flyweight Pattern) ,通過共用多個對象的相同狀態,讓有限的記憶體容量載入更多對象。 Java | JavaScript | Python | TypeScript | Go
-
代理模式(Proxy Pattern) ,用一個類來代理另一個類或幾個類的功能。 Java | JavaScript | Python | TypeScript | Go
-
過濾器模式(Filter Pattern) ,使用不同的標準條件來過濾一組對象,並通過邏輯運算的方式把各條件連接起來。 Java | JavaScript | Python | TypeScript | Go
行為型
-
策略模式(Strategy Pattern) ,將每一個演算法策略封裝到介面中,根據需要設定策略,使具體實現和策略解耦。 Java | JavaScript | Python | TypeScript | Go
-
觀察者模式(Observer Pattern) ,當主題對象的狀態發生改變時,所有依賴對象都得到通知並被自動更新。 Java | JavaScript | Python | TypeScript | Go
-
迭代器模式(Iterator Pattern) ,給數據對象構建一套按順序訪問集合對象元素的方式。 Java | JavaScript | Python | TypeScript | Go
-
模板方法模式(Template Method Pattern) ,定義了一個抽象公開類,包含基本的演算法骨架,而將一些步驟延遲到子類中。 Java | JavaScript | Python | TypeScript | Go
-
責任鏈模式(Chain of Responsibility Pattern) ,為請求創建了一個接收者對象的鏈,請求沿著處理者鏈進行發送和處理。 Java | JavaScript | Python | TypeScript | Go
-
命令模式(Command Pattern) ,把請求以命令的形式包裹在對象中,並傳給調用對象。 Java | JavaScript | Python | TypeScript | Go
-
備忘錄模式(Memento Pattern) ,將對象的狀態捕捉住,並以備忘錄的形式存儲起來,以便合適的時候還原。 Java | JavaScript | Python | TypeScript | Go
-
狀態模式(State Pattern) ,類的行為是基於它的狀態改變的,不同的狀態下有不同的行為。 Java | JavaScript | Python | TypeScript | Go
-
訪問者模式(Visitor Pattern) ,封裝訪問者類,把各元素類的操作集合起來,目的是將數據結構與數據操作分離。 Java | JavaScript | Python | TypeScript | Go
-
中介者模式(Mediator Pattern) ,它用一個中介對象來封裝一系列的動作,以讓對象之間進行交流。 Java | JavaScript | Python | TypeScript | Go
-
解釋器模式(Interpreter Pattern) ,實現了一個表達式介面,並能解釋特定的上下文裡面的變數和語句。 Java | JavaScript | Python | TypeScript | Go
設計模式源碼地址
詳細請訪問:https://github.com/microwind/design-pattern
詳細請訪問:https://github.com/microwind/design-pattern