策略模式

策略模式是一种行为设计模式,它允许在运行时根据需要选择算法。这种模式定义了一系列算法,并使得这些算法在使用的时候可以相互替换。客户端可以根据不同的情况选择合适的策略来处理问题,而不需要修改具体使用策略的代码。

以下是一个简单的策略模式示例代码:

复制代码
using System;

// 策略接口
interface IStrategy
{
    void Execute();
}

// 具体策略类A
class ConcreteStrategyA : IStrategy
{
    public void Execute()
    {
        Console.WriteLine("Executing strategy A");
    }
}

// 具体策略类B
class ConcreteStrategyB : IStrategy
{
    public void Execute()
    {
        Console.WriteLine("Executing strategy B");
    }
}

// 环境类
class Context
{
    private IStrategy strategy;

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

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

    public void ExecuteStrategy()
    {
        strategy.Execute();
    }
}

class Program
{
    static void Main()
    {
        // 创建具体策略实例
        IStrategy strategyA = new ConcreteStrategyA();
        IStrategy strategyB = new ConcreteStrategyB();

        // 创建上下文对象,并设置具体策略A
        Context context = new Context(strategyA);
        context.ExecuteStrategy();

        // 切换具体策略为B,并执行
        context.SetStrategy(strategyB);
        context.ExecuteStrategy();
    }
}
复制代码

在上面的代码中,我们定义了一个策略接口 IStrategy,和两个具体策略类 ConcreteStrategyA 和 ConcreteStrategyB,它们分别实现了策略接口的 Execute() 方法。然后定义了一个环境类 Context,它持有一个策略对象,并提供动态切换策略的方法 SetStrategy(),以及执行策略的方法 ExecuteStrategy()

在 Main() 方法中,我们首先创建具体策略实例A和B,然后创建一个环境对象并设置具体策略A,调用 ExecuteStrategy() 方法执行策略A。接着切换策略为B,并再次执行策略,从而演示了在运行时根据情况切换不同的策略。

策略模式可帮助程序更灵活地应对不同的需求,提高代码的可维护性和扩展性,同时避免了硬编码不同的算法逻辑。

posted @   电器小君子  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示