設計模式是很多程序員總結出來的優秀實踐。曾經在剛開始寫項目的時候學習過設計模式,在開發過程中,也主動或者被動的使用過。現在寫代碼雖說不會特意明確在用哪種設計模式,但潛移默化的寫出來公認的優秀實踐代碼,畢竟看的比較清爽。
為什麼再看一遍設計模式,主要有幾個原因:
第一,很多優秀的源碼基本都使用了設計模式,明確設計模式能夠更好的看源碼。
第二,很多中間件設計理念也是基於設計模式的,還有其他的語言,都有自己的設計優秀實踐。對於我來說,設計模式始於java,不止於java。
第三,有了這種規範,可以更好的和他人溝通,言簡意賅。
設計模式的六大原則:
單一職責原則,對擴展開放,對修改關閉。開閉原則,類的職責單一。里氏替換原則,子類可以透明替換父類。依賴倒置原則六大原則是基礎,所有的設計模式都是基於這六大設計原則進行設計編程的。
二十三種設計模式
創建型:
單件模式(Singleton Pattern);保證一個類僅有一個實例,並提供一個訪問它的全局訪問點。減少了內存的開銷,避免對資源的多重佔用。抽象工廠(Abstract Factory);抽象工廠模式主要設計產品組的概念,就是某一個工廠生產出配套的一系列產品。建造者模式(Builder);分離複雜對象的構建和表示。同樣的構建過程可以創建不同的表示。工廠方法模式(Factory Method);任何可以產生對象的方法或類,都可以稱之為工廠。工廠可以靈活的控制生產過程,定製權限、修飾、日誌。
結構型:
適配器模式(Adapter Pattern);讓兩個不兼容的東西可以一起工作。橋接模式(Bridge Pattern);用於抽象化和實現化的解耦。提高了代碼的拓展性,並且可以實現代碼的動態切換。裝飾模式(Decorator Pattern);代理模式是原對象做不了那件事,必須讓代理對象去做,主導側重於代理對象組合模式(Composite Pattern);組合模式是將存在某種包含關係的數據組織在一起,典型的例子就是樹狀結構。外觀模式(Facade Pattern);把內外關係封裝起來,對外提供的接口封裝到一個類裡。由這一個類管理其他的類,對外提供一個統一的接口。這就是門面模式。享元模式(Flyweight Pattern);儘可能的讓用戶複用已經有的對象,從而避免造成反覆創建對象的資源浪費。代理模式(Proxy Pattern);代理就是,一個對象輔助另一個對象去做某件事,同時還可以增加一點輔助功能。行為型:
模板方法(Template Method);一個抽象類公開定義了執行它的方法的方式/模板。它的子類可以按需要重寫方法實現,但調用將以抽象類中定義的方式進行。命令模式(Command Pattern);將請求以命令的形式包裹在對象中,並傳遞給對象,調用對象尋找到處理該命令的合適的對象,並將該命令傳遞給相應的對象,該對象執行。迭代器模式(Iterator Pattern);小結
雖然設計模式在企業的正式開發中並不能全部用到。但是,代碼的整潔與編程思路的清晰條理是一個程序員所必須的。
最後,把清華大佬的二十三種設計模式的詳細講解視頻分享給大家,希望你們可以喜歡!
獲取方式: