目录
一、背景
我们在写代码的时候,常常会遇到不同的情况不同处理,通常情况下我们会使用if...else if ....else.... 但随着程序的不断扩展,可能if...else if 会越来越多,可维护性就会不断降低,而且代码的可读性也会越来越差,所以这里推荐大家使用策略模式。这里我分享两种我在工作中比较常用的策略模式以及策略模式+责任链模式
在这里以Java的项目来进行演示
二、设计
以订单的多状态处理来进行设计
提供 IHander类进行统一的handler的定义
抽象AbstractOrderStatusHandler进行handler的默认的一些方法的定义
OrderCommitStatusHandler(具体的实现handler)
OrderPayStatusHandler
...
通过Strategy进行控制,利用Map的特性根据handler的键获取对应的真正的处理handler实现的常用的策略模式
三、优缺点
- 优点:提高了代码的可读性以及可扩展性(后续继续增加Handler就可以实现逻辑支持,无需改动原有的代码)。
- 缺点:如果handler太多了容易导致类的膨胀。可用匿名内部类的方式进行编写代码(方法级别的策略模式,具体参照demo中的方法级别的策略模式)