读书人

设计方式==责任链(Chain of Respon

发布时间: 2012-09-08 10:48:07 作者: rapoo

设计模式==责任链(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);    }}
?

读书人网 >网络基础

热点推荐