设计模式-责任链, 责任链+ 模板方法模式相结合
责任链,火车一样,一节一节串起来。类似
a.setNext(b);
b.setNext©;
c.setNext(d);
…
这里以多步校验做举例,正常方法中要写好多个if else
定义一个接口
package com.example.chain;/*** 订单校验**/
public interface OrderCreateValidator {/*** 设置下一个校验器** @param nextValidator*/public void setNext(OrderCreateValidator nextValidator);public OrderCreateValidator getNext();/*** 校验** @param request* @throws OrderException 订单异常*/public void validate(OrderCreateRequest request) throws OrderException;
}
类实现接口
package com.example.chain.orgin;import com.example.chain.OrderCreateRequest;
import com.example.chain.OrderCreateValidator;
import com.example.chain.OrderException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class UserValidator2 implements OrderCreateValidator {private OrderCreateValidator nextValidator;@Overridepublic void setNext(OrderCreateValidator next) {this.nextValidator = next;}@Overridepublic OrderCreateValidator getNext() {return nextValidator;}@Overridepublic void validate(OrderCreateRequest request) throws OrderException {System.out.println("UserValidator doValidate");}}
package com.example.chain.orgin;import com.example.chain.OrderCreateRequest;
import com.example.chain.OrderCreateValidator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class Goo