策略模式精髓

应用场景

项目中,如果遇到这种需求,根据一些条件不同,行为也不同。比如计税业务,根据国家的不同,计税方式不同。行为在某些场景下是需要相互替换的。这样就需要把变化的部分进行封装,这就是策略模式的应用场景。最简单的判断方式就是代码中有大量的if else 或者switch case,而且这些分支在未来还是可以增加的。这就非常需要用策略模式。不然不符合开闭原则。

设计思想

定义一个抽象类或者接口,声明变化的行为方法,让不同场景的子类去实现该方法。这样客户端调用时只需要引用这个父类,而不需要依赖具体的实现类,从而实现在不同的场景下,创建不同的子类,赋值给父类的引用,调用子类的行为。这样就实现了晚绑定,也符合开闭原则,如果需求新增加一个行为,只需要新增一种该场景下的子类,实现父类的行为方法即可。

你可能感兴趣的:(策略模式精髓)