熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java高級技術 >> 正文

設計模式之Strategy(策略)

2013-11-23 19:51:29  來源: Java高級技術 

  Strategy是屬於設計模式中 對象行為型模式主要是定義一系列的算法把這些算法一個個封裝成單獨的類
  Stratrgy應用比較廣泛比如公司經營業務變化圖可能有兩種實現方式一個是線條曲線一個是框圖(bar)這是兩種算法可以使用Strategy實現
  這裡以字符串替代為例 有一個文件我們需要讀取後希望替代其中相應的變量然後輸出關於替代其中變量的方法可能有多種方法這取決於用戶的要求所以我們要准備幾套變量字符替代方案
  
  首先我們建立一個抽象類RepTempRule 定義一些公用變量和方法
  public abstract class RepTempRule{
  protected String oldString=;
  public void setOldString(String oldString){
  thisoldString=oldString;
  }
  protected String newString=;
  public String getNewString(){
  return newString;
  }
  public abstract void replace() throws Exception;
  }
  在RepTempRule中有一個抽象方法abstract需要繼承明確這個replace裡其實是替代的具體方法我們現在有兩個字符替代方案
  將文本中aaa替代成bbb;
  將文本中aaa替代成ccc;
  對應的類分別是RepTempRuleOne RepTempRuleTwo
  public class RepTempRuleOne extends RepTempRule{
  public void replace() throws Exception{
  //replaceFirst是jdk新特性
  newString=oldStringreplaceFirst(aaa bbbb
  Systemoutprintln(this is replace one);
  }
  }
  public class RepTempRuleTwo extends RepTempRule{
  public void replace() throws Exception{
  newString=oldStringreplaceFirst(aaa ccc
  Systemoutprintln(this is replace Two); 
  }
  }
  至此我們完成了類圖的設計和程序編制調用如下:
  public class test{
  
  public void testReplace(){
  //使用第一套方案進行替換
  RepTempRule rule=new RepTempRuleOne();
  rulesetOldString(record);
  rulereplace();
  }
  
  }
  實際整個Strategy的核心部分就是抽象類的使用使用Strategy模式可以在用戶需要變化時修改量很少而且快速
  Strategy和Factory有一定的類似Strategy相對簡單容易理解
  Strategy適合下列場合
  以不同的格式保存文件;
  以不同的算法壓縮文件;
  以不同的算法截獲圖象;
  以不同的格式輸出同樣數據的圖形比如曲線 或框圖bar等
  
  
  

From:http://tw.wingwit.com/Article/program/Java/gj/201311/27578.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.