Strategy 是屬於設計模式中 對象行為型模式
Stratrgy 應用比較廣泛
這裡以字符串替代為例
關於替代其中變量的方法可能有多種方法
首先
public abstract class RepTempRule{
protected String oldString=
public void setOldString(String oldString){
this
}
protected String newString=
public String getNewString(){
return newString;
}
public abstract void replace() throws Exception;
}
在RepTempRule 中 有一個抽象方法abstract 需要繼承明確
我們現在有兩個字符替代方案
對應的類分別是RepTempRuleOne RepTempRuleTwo
public class RepTempRuleOne extends RepTempRule{
public void replace() throws Exception{
//replaceFirst 是jdk
newString=oldString
System
}
}
public class RepTempRuleTwo extends RepTempRule{
public void replace() throws Exception{
newString=oldString
System
}
}
第二步
public class RepTempRuleSolve {
private RepTempRule strategy;
public RepTempRuleSolve(RepTempRule rule){
this
}
public String getNewContext(Site site
return strategy
}
public void changeAlgorithm(RepTempRule newAlgorithm) {
strategy = newAlgorithm;
}
}
調用如下:
public class test{
public void testReplace(){
//使用第一套替代方案
RepTempRuleSolve solver=new RepTempRuleSolve(new RepTempRuleSimple());
solver
//使用第二套
solver=new RepTempRuleSolve(new RepTempRuleTwo());
solver
}
}
我們達到了在運行期間
實際整個Strategy 的核心部分就是抽象類的使用
Strategy 和Factory 有一定的類似
Strategy 適合下列場合:
From:http://tw.wingwit.com/Article/program/Java/gj/201311/27274.html