设计模式-策略模式

以下是一个简单的策略模式的C#实现示例。我们定义了一个IStrategy接口,以及实现了这个接口的两个类ConcreteStrategyAConcreteStrategyBContext类使用了策略模式来根据需要动态地改变算法或行为。

cs 复制代码
// 策略接口
interface IStrategy
{
    void Execute();
}
 
// 策略A的实现
class ConcreteStrategyA : IStrategy
{
    public void Execute()
    {
        Console.WriteLine("策略A执行。");
    }
}
 
// 策略B的实现
class ConcreteStrategyB : IStrategy
{
    public void Execute()
    {
        Console.WriteLine("策略B执行。");
    }
}
 
// 环境类
class Context
{
    private IStrategy _strategy;
 
    public Context(IStrategy strategy)
    {
        this._strategy = strategy;
    }
 
    public void ExecuteStrategy()
    {
        _strategy.Execute();
    }
}
 
// 客户端代码
class Program
{
    static void Main(string[] args)
    {
        // 使用策略A
        Context contextA = new Context(new ConcreteStrategyA());
        contextA.ExecuteStrategy();
 
        // 使用策略B
        Context contextB = new Context(new ConcreteStrategyB());
        contextB.ExecuteStrategy();
 
        Console.Read();
    }
}

在这个例子中,Context类是一个包装器,它接受一个实现了IStrategy接口的对象,并将所有工作委托给这个对象。客户端代码可以根据需要选择不同的策略对象来创建Context类的实例。这样,算法或行为可以在运行时动态地更改,而不改变Context类的接口。

相关推荐
资深web全栈开发9 小时前
设计模式之空对象模式 (Null Object Pattern)
设计模式
我爱cope13 小时前
【从0开始学设计模式-2| 面向对象设计原则】
设计模式
资深web全栈开发19 小时前
设计模式之访问者模式 (Visitor Pattern)
设计模式·访问者模式
sg_knight20 小时前
对象池模式(Object Pool)
python·设计模式·object pool·对象池模式
Yongqiang Cheng20 小时前
设计模式:C++ 单例模式 (Singleton in C++)
设计模式·c++ 单例模式
得一录21 小时前
AI Agent的主流设计模式之反射模式
人工智能·设计模式
我爱cope21 小时前
【从0开始学设计模式-1| 设计模式简介、UML图】
设计模式·uml
※DX3906※1 天前
Java多线程3--设计模式,线程池,定时器
java·开发语言·ide·设计模式·intellij idea
J_liaty1 天前
23种设计模式一中介者模式
设计模式·中介者模式
郝学胜-神的一滴2 天前
在Vibe Coding时代,学习设计模式与软件架构
人工智能·学习·设计模式·架构·软件工程