在策略模式中,一個類的行為或其演算法可以在運行時更改。 介紹 策略模式屬於行為型模式,通過將一系列通用演算法封裝起來,使它們能夠動態替換,而不是通過一大堆條件語句進行選擇判斷。 類圖描述 代碼實現 1、定義策略介面 2、實現策略 3、封裝策略 4、上層調用 總結 策略模式的出現是為瞭解決條件語句判斷的難 ...
在策略模式中,一個類的行為或其演算法可以在運行時更改。
介紹
策略模式屬於行為型模式,通過將一系列通用演算法封裝起來,使它們能夠動態替換,而不是通過一大堆條件語句進行選擇判斷。
類圖描述
代碼實現
1、定義策略介面
public interface IStrategy
{
int DoOperation(int num1, int num2);
}
2、實現策略
public class OperationAdd : IStrategy
{
public int DoOperation(int num1, int num2) => num1 + num2;
}
public class OperationMultiply : IStrategy
{
public int DoOperation(int num1, int num2) => num1 * num2;
}
public class OperationSubstract : IStrategy
{
public int DoOperation(int num1, int num2) => num1 - num2;
}
3、封裝策略
public class Context
{
private readonly IStrategy _strategy;
public Context(IStrategy strategy) => _strategy = strategy;
public int ExecuteStrategy(int num1, int num2) => _strategy.DoOperation(num1, num2);
}
4、上層調用
class Program
{
static void Main(string[] args)
{
Context context = new Context(new OperationAdd());
Console.WriteLine($"10 + 5 = {context.ExecuteStrategy(10, 5)}");
context = new Context(new OperationSubstract());
Console.WriteLine($"10 - 5 = {context.ExecuteStrategy(10, 5)}");
context = new Context(new OperationMultiply());
Console.WriteLine($"10 * 5 = {context.ExecuteStrategy(10, 5)}");
Console.ReadKey();
}
}
總結
策略模式的出現是為瞭解決條件語句判斷的難維護,簡化了策略選擇的代碼複雜度。