最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

輕松掌握Java策略模式

 更新時間:2016年09月29日 11:26:53   作者:斷了聯(lián)系  
這篇文章主要幫助大家輕松掌握Java策略模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

特點:

    1、算法可以自由切換。

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

    3、擴展性良好。

企業(yè)級開發(fā)和常用框架中的應用:java.servlet.http.HttpServlet的service方法

實例:對兩個數(shù)的操作行為。

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("執(zhí)行加法");
 System.out.println(num1+"+"+num2+"="+(num1+num2));
 }
 
}

class StrategySub implements Strategy{

 public void doOperation(int num1, int num2) {
 System.out.println("執(zhí)行減法");
 System.out.println(num1+"-"+num2+"="+(num1-num2));
 }
 
}

class StrategyMul implements Strategy{

 public void doOperation(int num1, int num2) {
 System.out.println("執(zhí)行乘法");
 System.out.println(num1+"*"+num2+"="+(num1*num2));
 }
 
}

class StrategyDiv implements Strategy{

 public void doOperation(int num1, int num2) {
 System.out.println("執(zhí)行除法");
 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);
 }
}

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

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

攀枝花市| 吉林市| 颍上县| 铅山县| 红桥区| 乡城县| 沭阳县| 临武县| 昭平县| 昭苏县| 时尚| 南开区| 大名县| 馆陶县| 赞皇县| 玛纳斯县| 连江县| 望奎县| 延寿县| 西盟| 丰顺县| 桐柏县| 兰坪| 原平市| 揭东县| 湘潭市| 五河县| 镇坪县| 莱阳市| 阳原县| 桂阳县| 昔阳县| 平昌县| 中牟县| 西华县| 平凉市| 锡林郭勒盟| 成都市| 荣昌县| 衡阳市| 汽车|