程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java設計形式之戰略形式(Strategy形式)引見

Java設計形式之戰略形式(Strategy形式)引見

編輯:關於JAVA

Java設計形式之戰略形式(Strategy形式)引見。本站提示廣大學習愛好者:(Java設計形式之戰略形式(Strategy形式)引見)文章只能為提供參考,不一定能成為您想要的結果。以下是Java設計形式之戰略形式(Strategy形式)引見正文


Strategy是屬於設計形式中 對象行動型形式,重要是界說一系列的算法,把這些算法一個個封裝成零丁的類。

Stratrgy運用比擬普遍,好比,公司運營營業變更圖,能夠有兩種完成方法,一個是線條曲線,一個是框圖(bar),這是兩種算法,可使用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 testWordStr(){
  //應用第一套替換計劃
  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等。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved