設計模式之策略模式

今天讀了設計模式(Head First)的一種模式--策略模式,大概說一下我對這種模式的理解。

先從對象說起,我們先設定一個鴨子對象,當然這是一個統稱,因爲鴨子會有各種各樣的,比如:水裏遊得,不同顏色的,不同品種的,甚至毛絨玩具,電動玩具都有基於鴨子模型的。而且它們會有不同的行爲,比如:會呱呱叫,吱吱叫,會飛,會游泳,當然也有都不會的。

如果我們程序中設定一個鴨子類(父類),把這些行爲都放入到這個類中,然後不同的鴨子繼承父類,需要實現父類的方法,這樣會有好不必要的代碼。然而這還會有一個問題,如果後期多了一個具有其他行爲(會說話)的鴨子,我們需要在父類中補上這個行爲,同時所有的子類都需要繼承父類的這個方法,會不會很頭疼......

我們可以這麼想,我們設定一個鴨子類,然後把行爲分爲兩種,一種爲叫聲(各種叫聲),一種爲動作(各種動作,飛行、游泳等),這兩種行爲做成兩個接口,具體的行爲就可以實現行爲接口,然後將兩個行爲接口在父類中聲明爲兩個引用變量。接下來就可以隨心所欲的組合了,首先定義一個我們想要的鴨子類,繼承父類實現行爲接口,如果它不會飛,我們可以添加一個實現類,實現動作接口,重寫動作方法爲不會飛。如果會吱吱叫,可以添加一個實現類,實現叫聲接口,重寫叫聲方法爲吱吱叫。

如此,我們如果後期多了一種會說話的鴨子,我們可以添加一個叫聲的實現類,重寫方法爲會說話,那麼我們就不用再去修改別的東西了,是不是特別方便了。

這只是我的一點感想,如果哪裏寫的不好或者不對,歡迎留言告訴我。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章