1. 程式人生 > >自我聯想學設計模式(初級版)-3-策略模式

自我聯想學設計模式(初級版)-3-策略模式

在具體怎麼使用策略模式之前,我們先自己定義一下什麼策略,所謂策略就是做某種事的方法吧,比如我們去火星,可以使用SpaceX的火箭,可以乘坐BlueOrigine的火箭,也可以乘坐俄羅斯的火箭,這就是做同一件事,策略不同。

那麼我們發現其實無論坐誰的火箭去火星,都要完成一個演算法,去火星。所以,無論是何種演算法,都要實現相同的函式介面:

 

我們和昨天學習的狀態模式對比下,就發現其實差不過,都是把現在要做的任務,分配給自己的小弟去做。

只不過,狀態模式在自己的狀態類裡做了某些操作之後,還要做狀態轉換。而策略模式就沒有這個困擾,所以其實策略模式不需要轉換這一步驟的,即使要轉換,也代表我們之前要做的事已經完成了,現在已經是另外一件完整的事情了(只不過另外一件事也是和之前的目的差不過而已,例如都是去火星)。而不是像狀態模式一樣,在做同一件事情的時候,因為各種原因要變換不同的狀態。

轉換為程式碼: