首页/开发/代码质量与评审速查/策略模式 Strategy(行为型)
设计原则与模式62 条

策略模式 Strategy(行为型)

把可互换算法封装为独立实现,运行期选择:消除调用方的条件分支,易于新增变体与单测;上下文只持接口,不感知具体算法。

意图算法族可替换、运行期选择
收益消除 switch、算法独立演进
实例定价策略、压缩算法、路由规则

Java 示例

Java 示例
interface Compressor { byte[] compress(byte[] in); }
class GzipCompressor implements Compressor { ... }
class ZstdCompressor implements Compressor { ... }

class Archiver {
    private final Compressor compressor;
    Archiver(Compressor c) { this.compressor = c; }
}

易错点

  • 策略对象需要上下文全部数据:接口被迫膨胀
  • 只有一种策略仍拆接口:按需引入,可先内联

数据来源与参考

  • 《设计模式》(GoF)· Strategy
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌