通過代碼來了解下java策略模式,消除if-else


 

 

 

 

通過上圖可以看出策略模式有以下角色構成:

1、抽象策略(Strategy)角色:抽象策略角色由抽象類或接口來承擔,它給出具體策略角色需要實現的接口;

2、具體策略(ConcreteStrategy)角色:實現封裝了具體的算法或行為;

3、場景(Context)角色:持有抽象策略類的引用。

策略模式重點是封裝不同的算法和行為,不同的場景下可以相互替換。策略模式是開閉原則的體現,開閉原則講的是一個軟件實體應該對擴展開放對修改關 閉。策略模式在新的策略增加時,不會影響其他類的修改,增加了擴展性,也就是對擴展是開放的;對於場景來說,只依賴於抽象,而不依賴於具體實現,所以對修 改是關閉的。

上面都是文字描述,下面通過簡單的代碼來進行直觀的展示

 

 

 

 

 

 

 

 

 

 從此告別if-else ,上面的類別可以用枚舉代替,這只是個例子,就不搞得那么正規了  - -!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM