《設計模式》之十三 策略模式

2021-09-01 17:45:53 字數 1305 閱讀 1994

strategy pattern 策略模式是一種比較簡單的模式,其定義如下:

define a family of algorithms, encapsulate each one, and make them interchangeable

定義一組演算法,將每個演算法封裝起來,並且使它們可以互換

通用原始碼:

public inte***ce strategy
public class concretestrategy1 implements strategy 

}

public class concretestrategy2 implements strategy 

}

public class context 

// 封裝後的策略方法

public void doanything()

}

最後是演示類:

public class client 

}

策略模式的優點:

1,演算法可以自由切換

2,避免使用多重條件判斷

3,擴充套件性良好

策略模式的缺點:

1,策略類數量增多

2,所有策略類都需要對外暴露,我們可以使用其他模式來修正這個缺陷,比如工廠方法、**模式等

策略模式使用場景:

1,多個類只有在演算法或行為上稍有不同的場景

2,演算法需要自由切換的場景

3,需要遮蔽演算法規則的場景

策略模式注意事項:

如果系統中乙個策略家族具體數量超過4個,則需要考慮使用混合模式。

策略模式的擴充套件:策略列舉

乙個簡單的輸入兩個數和乙個+或者-的運算符號,計算結果。

public enum calculator 

},//減法運算

sub("-")

};string value = "";

private calculator(string _value)

public string getvalue()

public abstract int exec(int a, int b);

}

public class clientenum 

}

實際專案中,我們一般通過工廠方法來實現策略類的宣告。

本人部落格已搬家,新位址為:

設計模式之策略模式

include using namespace std 飛行行為介面類 class flystrategy 高空飛行行為具現類 class heightfly public flystrategy virtual void fly private heightfly 低空飛行行為具現類 class ...

設計模式之 策略模式

策略模式 strategy pattern 定義了演算法家族,分別封裝起來,讓他們之間可以互相替換,此模式讓演算法的變化,不會影響到使用演算法的客戶。策略模式是一種定義了一系列演算法的方法,從概念上來看,所以得這些演算法完成的都是相同的工作,只是實現不同,它可以以相同的方式呼叫所有的演算法,減少了各...

設計模式之策略模式

何為策略,就是可以實現目標的方案集合。而完成一項任務有不同的方式,每一種方式稱為乙個策略。策略模式就是定義一系列演算法,將每乙個演算法封裝起來,並讓他們可以相互替換。很簡單的乙個例子 年底移動公司推出很多的活動,比如說 存話費贈食用油,交話費贈話費,買手機贈話費 等等。推出這些個活動目的就只有乙個,...