設計模式 策略模式(Strategy)

2021-08-23 11:38:15 字數 924 閱讀 5806

strategy策略模式又名政策(policy)模式,是屬於設計模式中物件行為型模式,主要是定義一系列的演算法,把這些演算法乙個個封裝成單獨的類,並且這些類(演算法)可以相互替換。strategy應用比較廣泛,比如, 公司經營業務變化圖, 可能有兩種實現方式,乙個是線條曲線,乙個是框圖(bar),這是兩種演算法,可以使用strategy實現。圖象壓縮系列演算法實現(不同的演算法分別對應乙個類)也可以採用strategy模式實現。其結構圖如下:

下面以乙個求職者投簡歷為例:

乙個求職者可能投中英文簡歷,但並不是對所有的公司都投中英文簡歷,故需要乙個策略來判斷投什麼簡歷。

簡歷(resume)**:

public inte***ce resume
寫中文簡歷**:

public class chineseresume implements resume 

}

寫英文簡歷:

public class englishresume implements resume 

}

求職者本身:

public class jobseeker 

public resume getresume()

public void setresume(resume resume)

public void postresume()

}

模擬求職者行為:

public class testseeker 

}

策略模式的缺點:

客戶必須了解不同的strategy:這是本模式潛在的乙個缺點,其實客戶要選擇乙個合適的strategy就必須知道這些strategy有何不同。這不可避免地向客戶暴露具體的實現問題。

Erlang與OO設計模式strategy模式

以前看過head first design patterns覺得是個不錯的書,學習了一點設計模式,現在弄erlang了,十分想兩者結合對比著看看,不為別的,體會兩者之間的區別跟聯絡,看看世界到底是oo的,還是functional的 d 由於我並沒有什麼真正oo的程式設計經驗,難免錯誤很多,大家批判著...

設計模式 策略設計模式

策略設計模式其實就是多型的使用,父類引用指向子類物件。策略模式的最大特點是使得演算法可以在不影響客戶端的情況下發生變化,從而改變不同的功能。策略模式的缺點其實也很明顯,在於策略模式把每一種具體的策略都封裝成乙個實現類,如果策略有很多的話,很顯然是實現類就會導致過多,顯得臃腫。案列 author de...

設計模式 策略模式

策略模式是一種定義一系列演算法的方法,從概念上來看,所有這些方法完成的都是相同的工作,只是實現不同,他們可以用相同的方式呼叫所有的演算法,減少了演算法類和使用演算法類之間的耦合.優點 策略模式的strategy類層次為context定義了一系列可供重用的演算法和行為,繼承有助於吸取這些演算法中的公共...