Java進階專題(九) 設計模式之總結


前言

​ 關於設計模式的文章就到這里了,學習這門多設計模式,你是不是有這樣的疑惑,發現很多設計模式很類似,經常會混淆某些設計模式。這章節我們將對設計模式做一個總結,看看各類設計模式有什么區別。需要注意的是,設計模式在於理解,不在於形式。不要為了套用設計模式而使用設計模式,而是,在業務上遇到問題時,很自然的想到設計模式作為一種解決方案。本章節參考資料書籍《Spring 5核心原理》中的第一篇 Spring 內功心法(Spring中常用的設計模式)(如果覺得本文對你有用,請點個推薦)。

GOF 23種設計模式簡介

設計模式其實一門藝術。設計模式來源於生活,不要為了套用設計模式而去使用設計模式。設計模式是在我們迷茫時提供的一種解決問題的方案,或者說用好設計模式可以防范於未然。自古以來 ,在我們人生迷茫時,我們往往都會尋求幫助,或上門咨詢,或查經問典。就在幾千年前,孔夫子就教給了我們怎樣做人。對於中國人來說都知道:從出
生元嬰、二十加冕、三十而立、四十不惑、五十知天命、六十花甲、七十古稀不逾矩、八、九十耄耋... ...我們這就是在用模板模式,當然,有些人不會選擇這套模板。設計模式總結的是經驗之談,總結的是前人的經驗,提供給后人去借鑒使用,前人栽樹,后人乘涼。設計模式可以幫助我們提升代碼的可讀性、可擴展性;降低維護成本;解決復雜的業務問題,但是,千萬千萬不要死記硬背,生搬硬套。

設計模式之間的關聯關系和對比

單例模式和工廠模式

實際業務代碼中,通常會把工廠類設計為單例。

策略模式與工廠模式

1、工廠模式包含工廠方法模式和抽象工廠模式是創建型模式,策略模式屬於行為型模式。
2、工廠模式主要目的是封裝好創建邏輯,策略模式接收工廠創建好的對象,從而實現不同的行為。

策略模式和委派模式

1、策略模式是委派模式內部的一種實現形式,策略模式關注的結果是否能相互替代。
2、委派模式更關注分發和調度的過程。

模板方法模式和工廠方法模式

工廠方法是模板方法的一種特殊實現。對於工廠方法模式的create()方法而言,相當於只有一個步驟的模板方法模式。這一個步驟交給子類去實現。而模板方法呢,將needHomework()方法和checkHomework()方法交給子類實現,needHomework()方法和checkHomework()方法又屬於父類的某一個步驟且不可變更。

模板方法模式和策略模式

1、模板方法和策略模式都有封裝算法。
2、策略模式是使不同算法可以相互替換,且不影響客戶端應用層的使用。
3、模板方法是針對定義一個算法的流程,將一些有細微差異的部分交給子類實現。
4、模板方法模式不能改變算法流程,策略模式可以改變算法流程且可替換。策略模式通常用來代替if...else...等條件分支語句。

裝飾者模式和靜態代理

1、裝飾者模式關注點在於給對象動態添加方法,而代理更加注重控制對對象的訪問。
2、代理模式通常會在代理類中創建被代理對象的實例,而裝飾者模式通常把被裝飾者作為構造參數。裝飾者和代理者雖然都持有對方引用,但邏輯處理重心是不一樣的。

裝飾者模式和適配器模式

1、裝飾者模式和適配器模式都是屬於包裝器模式(Wrapper Pattern)。
2、裝飾者模式可以實現被裝飾者與相同的接口或者繼承被裝飾者作為它的子類,而適配器和被適配者可以實現不同的接口。

​ 裝飾者和適配器都是對某對象的包裝和擴展,屬於裝飾器模式的實現形式。但是裝飾者需要滿足OOP的is-a關系,我們也講過煎餅的例子,不管如何包裝都有共同的父類。而適配器主要解決兼容問題,不一定要統一父類,比如LoginAdapter和RegistAdapter就是兼容不同功能的兩個類,但RegistForQQAdapter需要注冊后自動登錄,因此既繼承了RegistAdpter又繼承了LoginAdapter。

適配器模式和靜態代理模式

適配器可以結合靜態代理來實現,保存被適配對象的引用,但不是唯一的實現方式。

適配器和策略模式

在適配業務復雜的情況下,利用策略模式優化動態適配邏輯。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM