Strategy 是屬于設(shè)計(jì)模式中對象行為型模式,主要是定義一系列的算法,把這些算法一個(gè)個(gè)封裝成單獨(dú)的類。
Stratrgy 應(yīng)用比較廣泛,比如,公司經(jīng)營業(yè)務(wù)變化圖,可能有兩種實(shí)現(xiàn)方式,一個(gè)是線條曲線,一個(gè)是框圖(bar),這是兩種算法,可以使用Strategy 實(shí)現(xiàn)。
這里以字符串替代為例,有一個(gè)文件,我們需要讀取后,希望替代其中相應(yīng)的變量,然后輸出。
關(guān)于替代其中變量的方法可能有多種方法,這取決于用戶的要求,所以我們要準(zhǔn)備幾套變量字符替代方案。
首先,我們建立一個(gè)抽象類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 中 有一個(gè)抽象方法abstract 需要繼承明確,這個(gè)replace 里其實(shí)是替代的具體方法。
我們現(xiàn)在有兩個(gè)字符替代方案。
1.將文本中aaa 替代成bbb;
2.將文本中aaa 替代成ccc。
對應(yīng)的類分別是RepTempRuleOne、RepTempRuleTwo。
public class RepTempRuleOne extends RepTempRule{
public void replace() throws Exception{
//replaceFirst 是jdk1.4 新特性
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |