如何通过 switch 与 enum 结合实现解耦的 Strategy 模式应用?
- 内容介绍
- 文章标签
- 相关推荐
本文共计794个文字,预计阅读时间需要4分钟。
直接使用enum实现策略接口,再配合+
让枚举直接实现策略接口
Java 中的 enum 天然支持实现接口、定义抽象方法和提供具体实现,无需为每个策略新建类。
- 定义统一策略接口,例如 PaymentStrategy,含
pay(double amount)方法 - 声明枚举 PaymentMethod,implements PaymentStrategy
- 每个枚举常量(如
CREDIT_CARD、PAYPAL)在声明时直接覆写pay方法,内联具体逻辑 - 上下文(Context)只依赖接口,传入
PaymentMethod.CREDIT_CARD即可调用,完全屏蔽实现细节
用 switch 做编译期穷尽性保障与降级处理
switch 不用来写主流程,而是作为“安全网”——检查是否所有枚举值都被策略覆盖,或在特殊场景(如灰度、调试)中动态干预。
本文共计794个文字,预计阅读时间需要4分钟。
直接使用enum实现策略接口,再配合+
让枚举直接实现策略接口
Java 中的 enum 天然支持实现接口、定义抽象方法和提供具体实现,无需为每个策略新建类。
- 定义统一策略接口,例如 PaymentStrategy,含
pay(double amount)方法 - 声明枚举 PaymentMethod,implements PaymentStrategy
- 每个枚举常量(如
CREDIT_CARD、PAYPAL)在声明时直接覆写pay方法,内联具体逻辑 - 上下文(Context)只依赖接口,传入
PaymentMethod.CREDIT_CARD即可调用,完全屏蔽实现细节
用 switch 做编译期穷尽性保障与降级处理
switch 不用来写主流程,而是作为“安全网”——检查是否所有枚举值都被策略覆盖,或在特殊场景(如灰度、调试)中动态干预。

