【leetcode 連結串列】92. 反轉連結串列 II C++
阿新 • • 發佈:2021-01-06
技術標籤:設計模式
策略模式是什麼?
它定義了演算法家族,分別封裝起來,讓他們之間可以互相替換,此模式讓演算法的變化不會影響到使用演算法的客戶。
結構圖:
從定義中我們得知,策略模式是定義了演算法,所以我們以超市結賬的例子展示一下策略模式。從上面的結構圖中我們看到有一個策略類,所以我們要有一個策略類。
abstract class Strategy
{
public abstract void AlgorithmInterface();
}
策略類被繼承的具體演算法
//演算法A實現方法 class ConcreteStrategyA:strategy { public override void AlgorithmInterface() { console.writeLone("演算法A實現"); } } //具體演算法B class ConcreteStrategyB:strategy { public override void AlgorithmInterface() { console.writeLone("演算法B實現"); } } //具體演算法C class ConcreteStrategyC:strategy { public override void AlgorithmInterface() { console.writeLone("演算法C實現"); } }
context類
class Context
{
Strategy strategy;
public Context(strategy strategy)
{
this.strategy=strategy;
}
//上下文介面
public void ContextInterface()
{
strategy.AlgorhmInterface();
}
}
客戶端
static void main (string [] args) { Context context; context=new context(new ConcreteStrategyA()); context.ContextInterface(); context=new Context(new ConcreteStrategyB()); context.ContextInterface(); context=new Context(new ConcreteStrategyC()); context.ContextInterface(); }