欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

輕松掌握J(rèn)ava策略模式

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

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

特點(diǎn):

    1、算法可以自由切換。

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

    3、擴(kuò)展性良好。

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

實(shí)例:對(duì)兩個(gè)數(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);
 }
}

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論