一起来学设计模式 二 (策略模式)

策略模式是一种行为设计模式,允许在运行时动态选择算法。它包括一个抽象策略类和多个具体策略类,客户端通过上下文对象来执行不同策略的算法。例如,IStrategy是抽象策略,ConcreteStrategyA和ConcreteStrategyB是具体策略,Context是上下文类,客户端可以通过更换上下文中的策略对象来改变执行的算法。

C#中的策略模式是一种行为型设计模式,它允许在运行时动态地选择算法的行为。该模式定义了一系列算法,将每个算法封装起来,并使它们可以互换。这使得算法的变化独立于使用它们的客户端。

在C#中,策略模式通常由一个抽象策略类和多个具体策略类组成。抽象策略类定义了一个接口,用于所有具体策略类实现。具体策略类实现了抽象策略类定义的接口,并提供了自己的算法实现。

客户端使用策略模式时,它将一个具体策略对象传递给一个上下文对象。上下文对象将使用该策略对象来执行其算法。如果需要更改算法,客户端可以简单地传递另一个具体策略对象给上下文对象。

// 抽象策略类
public interface IStrategy
{
    void Execute();
}

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

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 ExecuteStrategy()
    {
        _strategy.Execute();
    }
}

// 客户端代码
var context = new Context(new ConcreteStrategyA());
context.ExecuteStrategy(); // 输出 "Executing strategy A"

context = new Context(new ConcreteStrategyB());
context.ExecuteStrategy(); // 输出 "Executing strategy B"

在上面的示例中,抽象策略类是IStrategy,具体策略类是ConcreteStrategyAConcreteStrategyB,上下文类是Context。客户端代码创建一个上下文对象,并将具体策略对象传递给它。上下文对象使用该策略对象来执行其算法。如果需要更改算法,客户端可以简单地传递另一个具体策略对象给上下文对象。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值