责任链模式_通过链式调度实现(互相推卸责任)
/**
* 过滤器
* @author maikec
* @date 2019/5/14
*/
public abstract class AbstractFilter {
private AbstractFilter next;
public AbstractFilter setNext(AbstractFilter next){
this.next = next;
return next;
}
/**
* 过滤行为
* @param req
* @return
*/
protected abstract Boolean doFilter(String req);
public void initChain(String req){
doFilter(req);
if (null != next){
next.initChain( req );
}
}
}
/**
* @author maikec
* @date 2019/5/14
*/
public class DecodeFilter extends AbstractFilter {
@Override
protected Boolean doFilter(String req) {
System.out.println( "DecodeFilter" );
return true;
}
}
/**
* @author maikec
* @date 2019/5/14
*/
public class EncodeFilter extends AbstractFilter {
@Override
protected Boolean doFilter(String req) {
System.out.println( "EncodeFilter" );
return true;
}
}
/**
* @author maikec
* @date 2019/5/14
*/
public class LoginFilter extends AbstractFilter {
@Override
protected Boolean doFilter(String req) {
if (StrUtil.equals( "maikec",req )){
System.out.println( "LoginFilter" );
return true;
}
return false;
}
}
/**
* @author maikec
* @date 2019/5/14
*/
public class LogoutFilter extends AbstractFilter {
@Override
protected Boolean doFilter(String req) {
if ("maikec".equals( req )){
return true;
}
return false;
}
}
/**
* @author maikec
* @date 2019/5/14
*/
public class ResponsibilityDemo {
public static void main(String[] args) {
AbstractFilter loginFilter = new LoginFilter();
EncodeFilter encodeFilter = new EncodeFilter();
DecodeFilter decodeFilter = new DecodeFilter();
LogoutFilter logoutFilter = new LogoutFilter();
loginFilter.setNext( encodeFilter ).setNext( decodeFilter ).setNext( logoutFilter );
loginFilter.initChain( "maikec" );
loginFilter.setNext( encodeFilter ).setNext( decodeFilter );
loginFilter.initChain( "maikec" );
}
}
附录
github.com/maikec/patt… 个人GitHub设计模式案例
声明
引用该文档请注明出处