Dive into Spring framework -- 瞭解基本原理(二)--設計模式-part2

Template模式java

Template模式顧名思義是提供了一種模板,也就是針對某種業務提供了模範框架。這個在spring中是屬於核心模式的,由於其ApplicationContext抽象類就是模板模式的終極體現。算法

Template模式通常狀況下是指針對某種業務算法(或者業務動做)造成的固定模式。並且它是基於繼承的一種實現。由父類類完成模板方法,僅留出模板方法中的特別處理方法做爲抽象方法,交由子類根據具體狀況來實現。spring

對於具體使用,要引用一下《Expert》中的一句話「Publicsuperclass methods are usually final: the abstract methods deferredto subclasses are protected. 正如這句話前面的一段所描述的,父類控制整個業務流,而將不能肯定一些具體實現延遲給子類實現。剛這句話是借用java的基本屬性來強制這種實現方式。父類中定義的工做流方法應該用publicfinal關鍵字,而抽象方法應該用protectedabstract 關鍵字。設計模式

經過Template模式,還實現了子類對父類的反向依賴。這樣就由原來上層類依賴具體實現的狀況,變成了子類依賴父類的具體邏輯,對於業務的實現主體都是在父類中完成的。框架


Strategy模式spa

策略是指在某種情況下,應該出手的套路。這包含了兩個方面,一是固定的策略模板,一是具體實現。Strategy模式正是這樣來實現的,它提供了一個具備策略模板的接口,具體業務系統僅依賴這個接口,而這也是依賴反轉的一個具體例子。爲什麼是依賴反轉呢?由於業務具體依賴接口,而具體的策略實現也是依賴接口。那麼若是按照咱們直觀的作法,可能就是由業務系統直接依賴某個具體實現。設計

命令模式,模板模式和策略模式都是《設計模式》中的行爲性模式。《敏捷》就是把TemplateStrategy放在一塊兒來描述的。指針



週末公司培訓,好多東西要消化,反卻是把blog放下了兩天,內心很不痛快。blog

此次寫的並很少,但從動手寫這些東西,內心就不斷有想法涌現。之前看過的書,真還須要多看幾遍,是切切實實地留在本身的記憶力,融到本身的代碼中。惋惜之前老是將那麼多好資料束之高閣。繼承

在寫這些筆記的時候,也一直在考慮應該怎樣去描述,畫一個清晰的類圖,太懶了,由於在《Design Patterns》中有不少好的類圖,關係圖。而如今本身寫下來的是本身的理解。

相關文章
相關標籤/搜索