一、定义
策略模式定义了算法族,分别封装起来,让他们之间可以互相替换。此模式让算法的变化独立于使用算法的客户。属于行为型设计模式。
1、优点
- 策略模式定义了算法族,易于扩展。可以很容易的在算法族中加入新的算法实现。比如:鸭子的飞行行为被封装为一组算法,有个新的火箭动力飞行方式加入到飞行算法中,直接实现飞行行为接口即可。
- 支持多态,可在运行时动态的改变行为。比如:皇后的角色默认使用宝剑战斗,在运行时,可以换成使用弓箭战斗。
- 代码可复用:相同的算法,只要定义一次,就可以在多个地方使用。
- 算法被封装起来,算法内容的改变对使用算法的客户是无感知的。
2、使用到的OO原则:
- 封装变化。
- 多用组合,少用继承。
- 针对接口编程,不针对实现编程。
二、使用场景
1、springboot中常见的使用策略模式的例子
1. 身份验证策略
Spring Security提供了多种身份验证策略,例如基于表单的登录、HTTP Basic、OAuth2 等。这些都是通过实现不同的认证策略来完成的,开发者可以根据需求选择或自定义策略。
2. 序列化策略
在 Spring Web 应用中,可以配置不同的序列化和反序列化策略,用于处理 JSON 或 XML 数据。例如,Jackson 和 Gson 是两种常用的 JSON 处理库,它们可以通过配置来作为应用的序列化策略。
3. 事务管理策略
Spring 支持声明式事务管理,允许选择不同的事务管理策略,如编程式或声明式事务管理,以及不同的事务传播行为策略。
4. 日志记录策略
通过 AOP (面向切面编程),Spring Boot 可以在不同的应用层切入日志记录操作,提供了统一的日志管理策略,而具体的日志实现可以是 Logback、Log4j 等。