应用场景:
有一些功能是需要经过一系列的步骤来完成,例如发布应用,可能需要先拉取代码,然后再编译构建,生成镜像,推送发布等等,类似这种一个环节一个环节的执行就可以使用责任链模式
实际操作
1:定义一个抽象类
public abstract class BaseHandler {
public abstract void execute();
public abstract Integer order();
}
2:有多个实现类
@Component
public class Tip1HandlerImpl extends BaseHandler {
@Override
public void execute() {
//业务逻辑
System.out.println("Tip1HandlerImpl");
}
@Override
public Integer order() {
return 1;
}
}
3:调用
调用的时候关键在于执行顺序,根据需求,可以提前约定好顺序,也可以根据请求调整顺序
@Autowired
private List<BaseHandler> baseHandlerList ;
//排序 这里执行顺序可以采用不同的方式
List<BaseHandler> collect = baseHandlerList.stream().sorted(Comparator.comparing(BaseHandler::order)).collect(Collectors.toList());
baseHandlerList.forEach(BaseHandler::execute);