1、spring依賴注入模式
@Configuration public class ChainConfig {@Beanpublic ChainSpringFactory chainSpringFactory(List<IHandler<DemoOne,Boolean>> handlerList){return new ChainSpringFactory(handlerList);}}
public class DemoOne { }
public abstract class IHandler<T,R> {public IHandler<T,R> nextHandler;public void setNextHandler(IHandler<T,R> nextHandler) {this.nextHandler = nextHandler;}public boolean hasNext() {return this.nextHandler != null;}/*** 處理責任鏈邏輯, 執行下個環節*/public R handle(T t){if(hasNext()){return nextHandler.handle(t);}return null;};}
public class ChainSpringFactory <T,R> {private IHandler<T,R> first;/*** 存放系統中責任鏈具體處理類* @param handlerList*/public ChainSpringFactory(List<IHandler<T,R>> handlerList) {Assert.notEmpty(handlerList,"無責任實現bean");for (int i = 0; i < handlerList.size()-1; i++) {handlerList.get(i).setNextHandler(handlerList.get(i+1));}first=handlerList.get(0);}/*** 執行具體業務場景中的責任鏈集合*/public R executeHandle(T productDto) {return first.handle(productDto);} }
</