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();  
    }  
}
相关推荐
guangzan2 小时前
常用设计模式:模板方法模式
设计模式
夏霞2 小时前
c# ASP.NET Core SignalR 客户端配置自动重连次数
c#·.netcore
Violet_YSWY3 小时前
.net讲解
.net
2501_930707783 小时前
使用C#代码在 Word 文档中查找并替换文本
开发语言·c#·word
步步为营DotNet5 小时前
.NET高性能内存管理
.net
一个帅气昵称啊5 小时前
在.NET中使用RAG检索增强AI基于Qdrant的矢量化数据库
ai·性能优化·c#·.net·rag·qdrant
Lei_3359675 小时前
[設計模式]二十三種設計模式
设计模式
还是大剑师兰特7 小时前
C#面试题及详细答案120道(86-95)-- 进阶特性
c#·大剑师
吃饺子不吃馅7 小时前
面试官:JWT、Cookie、Session、Token有什么区别?
前端·设计模式·面试