在Spring 當中存在的八大模式

Rainbow-Sea發表於2024-05-21

在Spring 當中存在的八大模式

@

目錄
  • 在Spring 當中存在的八大模式
  • 每博一文案
  • 1. 簡單工廠模式
  • 2. 工廠方法模式
  • 3. 單例模式
  • 4. 代理模式
  • 5. 裝飾器模式
  • 6. 觀察者模式
  • 7. 策略模式
  • 8. 模板方法模式
  • 最後:

每博一文案

我認為 “知世故而不世故” 才是真正意義上的成熟。
     迴歸到小孩子的純真和本心,經過歲月的洗禮和自我掙扎,兜兜轉轉,最後迴歸本我,找回初心。
     然而“初心是什麼?”
     是小孩子的本性?是不畏懼他人眼光勇於做自己?是拋開世俗的觀念,兜兜轉轉繞回到原點的真實?還是和想愛的人在一起因為三觀而非其他?是不把他人的想法駕凌在自己之上,是迴歸到本我?
     真正的勇敢,是在這現實的世界裡,理性浪漫主義般的活著。
     理想主義的可愛會讓一個人不那麼世俗化。而非世俗化就會顯得不世故,在一些人看來就是不成熟,於是就幼稚了。無論“幼稚”還是“成熟”,本質上都是每個人基於自己的個性特點和社會環境,所作出的選擇。
     它意味著你能承擔“幼稚”或“成熟”所帶來的風險與損失,也努力追求它所帶來的收益與快樂。
     如果我們承認,人和人與生俱來的不一樣。也承認,在一個發達的現代社會,我們可以以無數種方式去獲得成功。甚至,連成功的定義,都可以由自己決定。那麼,我們的生命應該會活得自由、珍重,而更有質感一點點吧。

在 Spring 當中存在著如下23種設計模式當中的 八大模式

  1. 簡單工廠模式
  2. 工廠方法模式
  3. 單例模式
  4. 代理模式
  5. 裝飾器模式
  6. 觀察者模式
  7. 策略模式
  8. 模板方法模式

1. 簡單工廠模式

BeanFactory 的 getBean() 方法,透過唯一的標識來獲取 Bean 物件,就是典型的簡單工廠模式(靜態工廠模式) 。簡單工廠模式步屬於23種設計模式的任何一種.

想要進一步,學習工廠方法模式,大家可以移步至:✏️✏️✏️ GoF之工廠模式-CSDN部落格

2. 工廠方法模式

FactoryBean 是典型的工廠方法模式,在配置檔案種透過 factory-method 屬性來指定工廠方法,該方法時一個例項方法。

想要進一步,學習工廠方法模式,大家可以移步至:✏️✏️✏️ GoF之工廠模式-CSDN部落格

3. 單例模式

Spring 用的是雙重判斷加鎖的單例模式,請看下面程式碼:

在這裡插入圖片描述

由於單例模式,涉及的篇幅過多,大家可以移步至:✏️✏️✏️ 23種設計模式:單例設計模式(餓漢式 VS 懶漢式)_單件模式 餓漢式csdn-CSDN部落格

4. 代理模式

Spring的 AOP 就是使用動態代理實現的。

想要進一步,更加深入的瞭解代理模式,大家可以移步至:✏️✏️✏️ GoF之代理模式(靜態代理+動態代理(JDK動態代理+CGLIB動態代理帶有一步一步詳細步驟))-CSDN部落格

5. 裝飾器模式

JavaSE中的IO流是非常典型的裝飾器模式。
Spring 中配置 DataSource 的時候,這些dataSource可能是各種不同型別的,比如不同的資料庫:Oracle、SQL Server、MySQL等,也可能是不同的資料來源:比如apache 提供的org.apache.commons.dbcp.BasicDataSource、spring提供的org.springframework.jndi.JndiObjectFactoryBean等。
這時,能否在儘可能少修改原有類程式碼下的情況下,做到動態切換不同的資料來源?此時就可以用到裝飾者模式。
Spring根據每次請求的不同,將dataSource屬性設定成不同的資料來源,以到達切換資料來源的目的。
Spring中類名中帶有:Decorator和Wrapper單詞的類,都是裝飾器模式。

6. 觀察者模式

定義物件間的一對多的關係,當一個物件的狀態發生改變時,所有依賴於它的物件都得到通知並自動更新。Spring中觀察者模式一般用在listener的實現。
Spring中的事件程式設計模型就是觀察者模式的實現。

在Spring中定義了一個ApplicationListener介面,用來監聽Application的事件,Application其實就是ApplicationContext,ApplicationContext內建了幾個事件,其中比較容易理解的是:ContextRefreshedEvent、ContextStartedEvent、ContextStoppedEvent、ContextClosedEvent

7. 策略模式

策略模式是行為性模式,呼叫不同的方法,適應行為的變化,強調父類的呼叫子類的特性。

getHandler 是 HandlerMapping 介面中的唯一方法,用於根據請求找到匹配的處理器。

比如我們自己寫了 AccountDao 介面,然後這個介面下有不同的實現類:AccountDaoForMySQL,AccountDaoForOracle。對於service 來說不需要關心底層具體的實現,只需要面向 AccountDao 介面呼叫,底層可以靈活切換實現,這就是策略模式。

8. 模板方法模式

Spring 中的 JdbcTemplate 類就是一個模板類。

它就是一個模板方法設計模式的體現,在模板類的模板方法 execute() 中編寫核心演算法,具體的實現步驟在子類中完成。想要進一步瞭解,模板方法模式,大家可以移步至:✏️✏️✏️ 23種設計模式之 : 模板方法設計模式_模板例項的設計模式有哪些-CSDN部落格

最後:

“在這個最後的篇章中,我要表達我對每一位讀者的感激之情。你們的關注和回覆是我創作的動力源泉,我從你們身上吸取了無盡的靈感與勇氣。我會將你們的鼓勵留在心底,繼續在其他的領域奮鬥。感謝你們,我們總會在某個時刻再次相遇。”

在這裡插入圖片描述

相關文章