C# 策略模式(Strategy Pattern)

策略模式定义了一系列的算法,并将每一个算法封装起来,使它们可以相互替换。策略模式让算法的变化独立于使用算法的客户。

cs 复制代码
// 策略接口  
public interface IStrategy  
{  
    void Execute();  
}  
  
// 具体策略A  
public class ConcreteStrategyA : IStrategy  
{  
    public void Execute()  
    {  
        Console.WriteLine("Executing strategy A");  
    }  
}  
  
// 具体策略B  
public class ConcreteStrategyB : IStrategy  
{  
    public void Execute()  
    {  
        Console.WriteLine("Executing strategy B");  
    }  
}  
  
// 上下文类,接收客户的请求并使用某种策略  
public class Context  
{  
    private IStrategy _strategy;  
  
    public Context(IStrategy strategy)  
    {  
        _strategy = strategy;  
    }  
  
    public void SetStrategy(IStrategy strategy)  
    {  
        _strategy = strategy;  
    }  
  
    public void ExecuteStrategy()  
    {  
        _strategy.Execute();  
    }  
}  
  
// 客户端代码  
class Program  
{  
    static void Main(string[] args)  
    {  
        Context context = new Context(new ConcreteStrategyA());  
        context.ExecuteStrategy();  
  
        context.SetStrategy(new ConcreteStrategyB());  
        context.ExecuteStrategy();  
    }  
}
相关推荐
知守观5 小时前
设计模式实战:从真实老项目中看标准模板方法与工厂的落地
java·spring·设计模式
吴可可1236 小时前
C#调用摄像头拍照的三种API方案
c#
Msir_Modern11 小时前
Noita 元胞沙盒笔记
算法·unity·c#·游戏引擎·元胞自动机
星之擎13 小时前
Task 很优雅的取消方式是什么?C# 里面。
开发语言·c#
czhc114007566314 小时前
一周概念复盘:预热、漂移与门禁
c#
mudtools15 小时前
一份声明,多份产物:飞书 SDK 的 AI 工具面是怎么生成的
人工智能·.net·ai编程
云中飞鸿15 小时前
.Net和C#有什么关系?(从C++视角观察)
开发语言·c#·.net
多弗朗皮卡丘16 小时前
C++特殊类设计
开发语言·c++·设计模式
Carl_奕然17 小时前
【智能体】Loop 的四种设计模式之:Verification Loop(2026 最新版)
人工智能·python·设计模式