`

设计模式==责任链(Chain of Responsibility)

阅读更多
/*
 * 责任链(Chain of Responsibility)
 *
 *
 * 多个处理器对象连成一串,请求在这条链上传递,由该处理这个请求的处理器来处理。发出请求的客户端并不知道哪个对象处理请求。
 */

package model;

public class TestChain {
    public static void main(String[] args) {
        String pass1 = "123456";
        String pass2 = "123456";
        String personId = "123456789012345678";
        String email = "huxz@tarena.com.cn";
        register(pass1, pass2, personId, email);
    }

    public static void register(String pass1, String pass2, String personId,
            String email) {
        Filter f1 = new PasswordFilter1();
        Filter f2 = new PasswordFilter2();
        Filter f3 = new PersonIdFilter();
        Filter f4 = new EmailFilter();
        f1.setNext(f2);
        f2.setNext(f3);
        f3.setNext(f4);
        System.out.println(f1.doFilter(pass1, pass2, personId, email));
    }
}

abstract class Filter {
    Filter next = null;

    public Filter getNext() {
        return next;
    }

    public void setNext(Filter next) {
        this.next = next;
    }

    public String doFilter(String pass1, String pass2, String personId,
            String email) {
        if (next == null)
            return "成功";
        else
            return next.doFilter(pass1, pass2, personId, email);
    }
}

class PasswordFilter1 extends Filter {
    public String doFilter(String pass1, String pass2, String personId,
            String email) {
        if (!(pass1.equals(pass2)))
            return "两次密码输入不一致";
        else
            return super.doFilter(pass1, pass2, personId, email);
    }
}

class PasswordFilter2 extends Filter {
    public String doFilter(String pass1, String pass2, String personId,
            String email) {
        if (pass1.length() != 6)
            return "密码长度必须为6";
        else
            return super.doFilter(pass1, pass2, personId, email);
    }
}

class PersonIdFilter extends Filter {
    public String doFilter(String pass1, String pass2, String personId,
            String email) {
        if (personId.length() != 15 && personId.length() != 18)
            return "身份证号码非法";
        else
            return super.doFilter(pass1, pass2, personId, email);
    }
}

class EmailFilter extends Filter {
    public String doFilter(String pass1, String pass2, String personId,
            String email) {
        int i1 = email.indexOf("@");
        int i2 = email.indexOf(".");
        if (i1 == -1 || i2 == -1 || i2 - i1 <= 1 || i1 == 0
                || i2 == email.length() - 1)
            return "email非法";
        else
            return super.doFilter(pass1, pass2, personId, email);
    }
}
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics