设计模式--策略模式

2023-07-27 08:55:31 浏览数 (1)

策略模式是一种行为设计模式,它使您能够定义一系列算法,将它们封装起来,并根据需要在运行时轻松地切换它们。

在策略模式中,算法被封装为单独的类,称为策略。这些策略实现共同的接口或基类,并被传递给另一个类(称为上下文),该类维护对当前策略的引用。上下文可以使用策略执行其任务,同时在需要时切换策略。

下面是使用C#实现策略模式的实例代码:

代码语言:javascript复制



// 定义策略接口
interface IStrategy
{
    int Execute(int a, int b);
}

// 实现不同的算法作为策略
class AddStrategy : IStrategy
{
    public int Execute(int a, int b)
    {
        return a   b;
    }
}

class MultiplyStrategy : IStrategy
{
    public int Execute(int a, int b)
    {
        return a * b;
    }
}

// 上下文类维护对当前策略的引用,并使用该策略执行其任务
class Context
{
    private IStrategy strategy;

    public Context(IStrategy strategy)
    {
        this.strategy = strategy;
    }

    public void SetStrategy(IStrategy strategy)
    {
        this.strategy = strategy;
    }

    public int ExecuteStrategy(int a, int b)
    {
        return strategy.Execute(a, b);
    }
}

// 示例代码
Context context = new Context(new AddStrategy());
int result = context.ExecuteStrategy(3, 4); // result is 7

context.SetStrategy(new MultiplyStrategy());
result = context.ExecuteStrategy(3, 4); // result is 12
```

【代码分析】

在这个示例中,`IStrategy`是策略接口,`AddStrategy`和`MultiplyStrategy`是具体的策略实现。`Context`类维护对当前策略的引用,并在执行任务时使用该策略。使用`SetStrategy`方法可以轻松切换策略。最后,我们创建一个`Context`实例,并使用不同的策略执行任务,得到不同的结果。

0 人点赞