设计模式-策略模式
小于 1 分钟
策略模式的优点: 1)干掉繁琐的 if、switch 判断逻辑; 2)代码优雅、可复用、可读性好; 3)符合开闭原则,扩展性好、便于维护;
策略模式的缺点: 1)策略如果很多的话,会造成策略类膨胀; 2)使用者必须清楚所有的策略类及其用途;
1、定义一个策略接口
public interface IHttpMethodDealModel {
/**
* 支持请求方式
* @return 请求方式
*/
HttpMethodEnum isSupport();
/**
* 请求处理
* @return 响应结果
*/
String reqDeal(GatewayApiTestConfig gatewayApiTestConfig);
}
2、定义各个策略子类,实现该接口
@Component
@Slf4j
public class HttpGetMethodDeal implements IHttpMethodDealModel {
@Override
public HttpMethodEnum isSupport() {
return HttpMethodEnum.GET;
}
@Override
public String reqDeal() {
//子类具体实现逻辑
}
}
3、具体实现
@Autowired
private List<IHttpMethodDealModel> httpMethodDealModelList;
//过滤出符合条件的策略者(apiRequestType为GET、POST等)
IHttpMethodDealModel methodDealModel = httpMethodDealModelList.stream()
.filter(x -> x.isSupport().equals(apiRequestType))
.findFirst()
.orElse(null);
methodDealModel.reqDeal();