C#面试题更新 2026-08-05

请解释在 C# 中策略模式的具体实现方式及其适用场景。

技术原理技术选型方案权衡C#

考察说明

考察对策略模式定义及 C# 实现细节的理解。

回答思路

  1. 【回答框架 1】策略模式定义:定义一组算法,将每个算法封装起来,并使它们可以互换。策略模式让算法的变化独立于使用算法的客户端。
  2. 【回答框架 2】C# 实现方式:通常定义一个策略接口,例如 IStrategy,包含一个执行方法;具体策略类实现该接口;上下文类持有策略接口的引用,并在运行时调用策略方法。
  3. 【回答框架 3】在 C# 中,也可以使用委托或 Func/Action 来简化策略实现,避免为每个策略定义单独类,尤其是策略逻辑简单时。
  4. 【回答框架 4】适用场景:当系统需要在多种算法或行为中选择一种执行,且算法可能变化时;例如排序算法、折扣计算等。策略模式有助于避免大量条件判断。
  5. 【回答框架 5】与简单工厂或依赖注入结合:使用工厂模式创建策略对象,或通过 DI 容器注入策略,提高灵活性。但需注意策略数量过多时类或委托管理复杂性。
  6. 【关键点 1】策略模式核心是算法的封装和互换。
  7. 【关键点 2】C# 中可用接口或委托实现。
  8. 【关键点 3】上下文类通过组合策略接口解耦算法。
  9. 【关键点 4】适用于算法多变或避免条件分支的场景。
  10. 【关键点 5】可结合工厂或 DI 管理策略实例。
  11. 【易错点 1】过度使用策略模式导致类或委托过多,增加维护成本。
  12. 【易错点 2】上下文需负责策略生命周期时,可能引入状态管理问题。