国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

輕松掌握Java策略模式

2019-11-26 13:46:56
字體:
來源:轉載
供稿:網友

定義:一個類的行為或其算法可以在運行時更改。在策略模式中,我們創建表示各種策略的對象和一個行為隨著策略對象改變而改變的 context 對象。策略對象改變 context 對象的執行算法。

特點:

    1、算法可以自由切換。

    2、避免使用多重條件判斷。

    3、擴展性良好。

企業級開發和常用框架中的應用:java.servlet.http.HttpServlet的service方法

實例:對兩個數的操作行為。

public class Demo { public static void main(String[] args) { Strategy strategy1 = new StrategyAdd(); Strategy strategy2 = new StrategyDiv(); Context context1 = new Context(strategy1); context1.execute(10, 5); context1 = new Context(strategy2); context1.execute(10, 5); }}interface Strategy{ public void doOperation(int num1,int num2);}class StrategyAdd implements Strategy{ public void doOperation(int num1, int num2) { System.out.println("執行加法"); System.out.println(num1+"+"+num2+"="+(num1+num2)); } }class StrategySub implements Strategy{ public void doOperation(int num1, int num2) { System.out.println("執行減法"); System.out.println(num1+"-"+num2+"="+(num1-num2)); } }class StrategyMul implements Strategy{ public void doOperation(int num1, int num2) { System.out.println("執行乘法"); System.out.println(num1+"*"+num2+"="+(num1*num2)); } }class StrategyDiv implements Strategy{ public void doOperation(int num1, int num2) { System.out.println("執行除法"); System.out.println(num1+"/"+num2+"="+(num1/num2)); } }class Context{ private Strategy strategy;  public Context(Strategy strategy) { this.strategy = strategy; }  public void execute(int num1,int num2){ strategy.doOperation(num1, num2); }}

策略模式強調的是運行時更改,可能在上面的代碼中,這種運行時更改沒有得到很好的體現,我們可以假設一個實際場景,就是當一個對象參數傳到一個方法中來的時候,假設我們要根據參數的不同選擇不同的方法,我們這是會考慮if-else來進行判斷,而策略模式則是對這些if-else進行分類,每一個判斷一個類,然后對象過來了,直接調用策略接口方法,而對象參數屬于哪個具體類則是有jvm來判斷,我們不必要去了解對象參數屬性類型什么的,這樣不僅簡化了我們的開發工作,而且相比較于if-else,這樣有更好的擴展性。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宽城| 含山县| 高邑县| 丹凤县| 彝良县| 宁强县| 长葛市| 庆城县| 易门县| 柳林县| 铁岭县| 蒲江县| 阳江市| 确山县| 大兴区| 泸西县| 兴海县| 逊克县| 肥乡县| 瓦房店市| 元阳县| 博爱县| 信丰县| 申扎县| 秀山| 仲巴县| 德化县| 鄱阳县| 南江县| 台北县| 陕西省| 长治市| 洞口县| 巴林右旗| 民权县| 玉田县| 大理市| 沙田区| 云浮市| 含山县| 潞城市|