策略模式是一种行为设计模式,它能让你定义一系列算法,并将每种算法分别放入独立的类中,以使算法的对象能够相互替换。
当你有许多仅在执行某些行为时略有不同的相似类时,可使用策略模式。使用该模式能将类的业务逻辑与其算法实现细节隔离开来。
说白了,其实还是解耦
策略模式的结构如上图所示,主要包含三个角色:
抽象角色:通常是一个接口
具体角色:接口的具体实现
环境角色:调用接口的上下文环境,通常是一段业务逻辑方法
举个常见的例子:支付
先定义一个接口 PayStrategy.java
package com.example.service; import com.example.domain.dto.PayDTO; import com.example.domain.dto.PayDetailDTO; /** * @author ChengJianSheng * @date 2021/1/11 */ public interface PayStrategy { /** * 下单 */ PayDTO prepay(); /** * 查询 */ PayDetailDTO query(); /** * 撤销 */ void cancel(); /** * 退款 */ void refund(); }