1. 程式人生 > 其它 >【leetcode 連結串列】92. 反轉連結串列 II C++

【leetcode 連結串列】92. 反轉連結串列 II C++

技術標籤:設計模式

策略模式是什麼?

它定義了演算法家族,分別封裝起來,讓他們之間可以互相替換,此模式讓演算法的變化不會影響到使用演算法的客戶。

結構圖:

從定義中我們得知,策略模式是定義了演算法,所以我們以超市結賬的例子展示一下策略模式。從上面的結構圖中我們看到有一個策略類,所以我們要有一個策略類。

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();

}