亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

設計模式之Strategy(策略)

系統 1907 0
Strategy策略模式是屬于設計模式中 對象行為型模式,主要是定義一系列的算法,把這些算法一個個封裝成單獨的類.

Stratrgy應用比較廣泛,比如, 公司經營業務變化圖, 可能有兩種實現方式,一個是線條曲線,一個是框圖(bar),這是兩種算法,可以使用Strategy實現.

這里以字符串替代為例, 有一個文件,我們需要讀取后,希望替代其中相應的變量,然后輸出.關于替代其中變量的方法可能有多種方法,這取決于用戶的要求,所以我們要準備幾套變量字符替代方案.
設計模式之Strategy(策略)

首先,我們建立一個抽象類RepTempRule 定義一些公用變量和方法:

public abstract class RepTempRule{

protected String oldString="";
public void setOldString(String oldString){
  this.oldString=oldString;
}

protected String newString="";
public String getNewString(){
  return newString;
}

public abstract void replace() throws Exception;

}

在RepTempRule中 有一個抽象方法abstract需要繼承明確,這個replace里其實是替代的具體方法.
我們現在有兩個字符替代方案,
1.將文本中aaa替代成bbb;
2.將文本中aaa替代成ccc;

對應的類分別是RepTempRuleOne RepTempRuleTwo

public class RepTempRuleOne extends RepTempRule{

public void replace() throws Exception{

  //replaceFirst是jdk1.4新特性
  newString=oldString.replaceFirst("aaa", "bbbb")
  System.out.println("this is replace one");
}

}

public class RepTempRuleTwo extends RepTempRule{

public void replace() throws Exception{

  newString=oldString.replaceFirst("aaa", "ccc")
  System.out.println("this is replace Two");
}

}

第二步:我們要建立一個算法解決類,用來提供客戶端可以自由選擇算法。

public class RepTempRuleSolve {
  private RepTempRule strategy;

  public RepTempRuleSolve(RepTempRule rule){
    this.strategy=rule;
  }

  public String getNewContext(Site site,String oldString) {
    return strategy.replace(site,oldString);
  }

  public void changeAlgorithm(RepTempRule newAlgorithm) {
    strategy = newAlgorithm;
  }
}

調用如下:

public class test{

......

  public void testReplace(){

  //使用第一套替代方案
  RepTempRuleSolve solver=new RepTempRuleSolve(new RepTempRuleSimple());
  solver.getNewContext(site,context);

  //使用第二套

  solver=new RepTempRuleSolve(new RepTempRuleTwo());
  solver.getNewContext(site,context);

  }

.....

}

我們達到了在運行期間,可以自由切換算法的目的。

實際整個Strategy的核心部分就是抽象類的使用,使用Strategy模式可以在用戶需要變化時,修改量很少,而且快速.

Strategy和Factory有一定的類似,Strategy相對簡單容易理解,并且可以在運行時刻自由切換。Factory重點是用來創建對象。

Strategy適合下列場合:

1.以不同的格式保存文件;

2.以不同的算法壓縮文件;

3.以不同的算法截獲圖象;

4.以不同的格式輸出同樣數據的圖形,比如曲線 或框圖bar等

設計模式之Strategy(策略)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产成人精品三级91在线影院 | 久久精品一区二区国产 | 九九精品免视看国产成人 | 国产乱人视频在线播放不卡 | yellow中文字幕久久网 | 亚洲欧美久久精品一区 | 日韩精品一区二区在线观看 | 激情亚洲婷婷 | 欧美福利精品福利视频在线观看 | 91视频免费网站 | 久久99视频精品 | 人人爽天天爽夜夜爽qc | 全部免费特黄特色大片视频 | 成人欧美一区二区三区黑人免费 | 亚洲视频 欧美视频 | 九九免费观看全部免费视频 | 四虎影院永久网址 | 嫩草成人国产精品 | 天海冀一二三区 | 特一级男女性色大片 | 玖玖国产在线 | 欧美在线小视频 | 在线免费观看国产精品 | 国产日韩一区 | 91亚洲最新精品 | 五月婷婷开心中文字幕 | 国产梦呦精品 | 久久精品国产2020 | 在线成人爽a毛片免费软件 在线成人天天鲁夜啪视频 在线成人亚洲 | 日本又黄又爽又色的免费视频 | 免费久久| 亚洲精品久久九九精品 | 欧美一级特黄真人毛片 | 欧美 激情 在线 | 国产精品久久久久久久久99热 | 精品国产免费一区二区三区五区 | 欧美成人猛男性色生活 | 视频一区二区三区在线 | 欧美日韩成人高清色视频 | 亚洲成a人v欧美综合天 | 四虎成人4hutv影院 |