下面是乙個有關於策略模式的故事。假設mike在開車的時候,會很頻繁的加速,有一天因為超速他被乙個警察攔下來了。有可能這個警察會比較友好,沒開任何罰單就讓mike把車開走了。(我們把這型別的警察稱之為「nicepolice」)。也有可能mike遇到了乙個不太友好的警察,然後這個警察給mike出具了一張罰單。(我們把這型別的警察稱之為「hardpolice」)。
mike其實並不知道他會遇到什麼型別的警察,直到他因為超速而被警察要求停車下來,實際上這就是一種程式當中「執行時」的概念,只有在執行的時候,才知道,到底會遇到什麼型別的警察,實際上這就是「策略模式」。
先來定義乙個策略的介面:strategy
1
public
inte***ce
strategy
再來定義兩種不同型別的strategy:
1
public
class
nicepolice
implements
strategy
7
}
1
public
class
hardpolice
implements
strategy
7
}
定義乙個需要依賴警察來處理超速問題的場景:
01
public
class
situation
07
08
public
void
handlebypolice(
int
speed)
11
}
最後,進行測試:
01
public
class
main
15
}
策略模式,實際上就是定義了一些演算法,並把他們都封裝起來,使得他們之間可以互相替代。實際上對應上面程式,就是定義了兩種演算法(nicepolice以及hardpolice),由於他們都實現了strategy這個介面,那麼對於依賴於這個介面的例項物件來說,可以動態的對這個依賴進行注入,從而達到執行時確定具體使用哪一種演算法的目的。
java 設計模式 策略模式
就是比較兩個類別時,要自己寫乙個比較器,這個比較器實現了 comparator介面,裡面實現public int compare object o1,object o2 方法。在實體類裡面要有乙個成員變數時這個比較器,這個實體類也要實現了 comparable介面。例如 cat有兩個屬性,heigh...
java設計模式 策略模式
策略模式 strategy pattern 體現了兩個非常基本的物件導向設計的原則 1 封裝變化的概念 2 程式設計中使用介面,而不是對介面的實現。策略模式定義了乙個共同的抽象演算法介面,其子類實現這個介面定義的方法,並且都有各自不同的實現,這些演算法實現可以在客戶端呼叫它們的時候互不影響的變化。子...
設計模式 java策略模式
相關的資料網上很多,我這裡自己總結一下。策略模式就是為了達到乙個目標,可以有多種方法 即多種策略 採用,為了減少類與類之間的耦合,所以採用如下措施 設定乙個介面,inte ce strategy,裡面有未實現的方法dothings strategya 繼承 strategy,strategyb 也繼...