.NET高级面试指南专题十七【 策略模式模式介绍,允许在运行时选择算法的行为】

介绍:

策略模式是一种行为设计模式,它允许在运行时选择算法的行为。它定义了一系列算法,将每个算法封装到一个对象中,并使它们可以互相替换。这使得算法可独立于使用它的客户端变化。

原理:

策略接口(Strategy Interface) :定义一组算法的接口。
具体策略类(Concrete Strategy Classes) :实现策略接口的具体算法。
上下文类(Context Class):维护一个对策略对象的引用,并在运行时选择所需的具体策略。

优点:

灵活性: 能够在运行时动态地改变对象的行为。
可扩展性: 容易增加新的算法或策略。
复用性: 可以复用现有的算法,不需要重复实现。

缺点:

增加对象数量 :每个具体策略都会创建一个对象,可能会导致类的数量增加。
客户端必须知道策略:客户端需要了解不同的策略,以便选择正确的策略。

代码示例

csharp 复制代码
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)
    {
        _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());

        // 执行策略A
        context.ExecuteStrategy();

        // 切换到策略B
        context.SetStrategy(new ConcreteStrategyB());

        // 执行策略B
        context.ExecuteStrategy();
    }
}
相关推荐
海蓝可知天湛3 分钟前
利用Genspark自定义智能体:算法竞赛测试数据反推与生成工具
算法·aigc
BothSavage7 分钟前
Qwen3-VL-8B-Instruct推理测试transformer+sglang双版本
算法
ysdysyn16 分钟前
.NET 10深度解析:性能革新与开发生态的全新篇章
c#·.net
尤超宇24 分钟前
YOLOv3 目标检测算法核心技术
算法·yolo·目标检测
cyclel1 小时前
散列表的小想法
算法
Code小翊1 小时前
堆的基础操作,C语言示例
java·数据结构·算法
余俊晖1 小时前
如何让多模态大模型学会“自动思考”-R-4B训练框架核心设计与训练方法
人工智能·算法·机器学习
Emilia486.1 小时前
【Leetcode&nowcode&数据结构】顺序表的应用
数据结构·算法·leetcode
一水鉴天1 小时前
整体设计 逻辑系统程序 之27 拼语言整体设计 9 套程序架构优化与核心组件(CNN 改造框架 / Slave/Supervisor/ 数学工具)协同设计
人工智能·算法
小年糕是糕手1 小时前
【数据结构】双向链表“0”基础知识讲解 + 实战演练
c语言·开发语言·数据结构·c++·学习·算法·链表