策略模式定义
比如对象的某个行为,在不同场景有不同实现方式,可以将这些行为的具体实现定义为一组策略,每个实现类实现种策略,在不同场景使用不同的实现,并且可以自由切换策略。
策略模式结构
策略模式需要一个策略接口,不同的策略实现不同的实现类,在具体业务环境中仅持有该策略接口,根据不同的场景使用不同的实现类即可。
面向接口编程,而不是面向实现。
优点
1、干掉繁琐的 if、switch 判断逻辑;
2、代码优雅、可复用、可读性好;
3、符合开闭原则(对修改关闭, 对扩展开放),扩展性好、便于维护;
缺点
1、策略如果很多的话,会造成策略类膨胀;
2、使用者必须清楚所有的策略类及其用途;
策略模式代码示例
- 基础登录接口
//基础登录接口
public interface BaseLoginService {
void login(BaseLoginContext context);
}
- 策略上下文实现
@Data
public class BaseLoginContext {
private String userName;
private String password;
private BaseLoginService baseLoginService;
public BaseLoginContext(String userName, String password, Base