設計模式專輯——策略模式、狀態模式、訪問者模式的比較

 >>版權聲明:本文爲原創文章,請不要拷貝轉載。微信

 

1.比較spa

(狀態模式)blog

狀態模式

 (策略模式)接口

 (訪問者模式)圖片

 

這三種模式有相似的地方,其中狀態模式和策略模式類似度很是高,經過類圖根本沒法區分。那麼咱們怎麼去理解這三個模式呢。支付寶

其實這三個模式均可以看作是某種狀態與相應處理策略(處理邏輯)的協做關係的表述it

咱們先看訪問者模式的類圖,圖中的每一個Element其實能夠視爲某種狀態。Vistor接口定義了每種狀態對應的抽象處理方法,即一個Vistor至關於一組策略。Vistor接口的定義隱含了狀態的數量是固定的這一前提。那麼整個訪問者模式實際上是在擴展策略組。擴展

咱們總結下,訪問者的應用場景是狀態固定的狀況下,動態增長處理策略組合。float

狀態模式中每一個狀態事實上包含兩個部分,一個是某種狀態,一個是這種狀態對應的處理策略。也就是說狀態和處理策略不可分割。狀態增長了處理策略也相應增長。方法

總結下,狀態模式下一種狀態只有一種處理策略,策略和狀態緊密綁定,擴展狀態的同時策略相應增長。

看懂了上面兩個以後,再來理解策略模式就簡單多了,策略模式中只體現了處理邏輯,並無體現狀態,狀態被抽離出去了。處理邏輯和狀態沒有對應關係。咱們所作的只是不斷的擴展策略(處理邏輯)。至於這個策略會用在什麼狀態之下,並不關心。A狀態可使用1策略,也許也可使用2策略,這徹底取決於調用者。

總結下,策略模式不關心狀態,只有處理邏輯的擴展。

 

注:圖片來自維基百科。 

 

喜歡的話能夠打賞一下哦!!!

支付寶

微信

相關文章
相關標籤/搜索