首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

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

2012-09-08 
设计模式==责任链(Chain of Responsibility)/* * 责任链(Chain of Responsibility) * * * 多个处理器对象

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

热点排行