用责任链模式写注册逻辑

来源:互联网 发布:vb开源游戏引擎 编辑:程序博客网 时间:2024/06/05 01:53

注册信息太多,要用很多个if…else…做控制,我觉得可以用责任链模式来写,将逻辑控制独立到单独的对象中,同时有变化产生时,修改控制类中的责任链即可

简单的业务场景,对用户名,密码,身份证号,验证码做验证

有对责任链模式不了解的可以看我之前的blog ——http://blog.csdn.net/tyronerenekton/article/details/52534730

见代码

public class RegisterMessageHelper {    private IHander iHander;    public RegisterMessageHelper(IHander iHander) {        this.iHander = iHander;    }    public boolean MessageIsTrue(String ... params) {        return iHander.MessageOK(params);    }}

public abstract class IHander {

protected IHander next;protected void setNext(IHander iHander) {    next = iHander;}public void printErrorMessage() {}protected abstract boolean MessageOK(String... params);

}

public class UserNameAndPasswordHandler extends IHander{    @Override    protected boolean MessageOK(String ...params) {        /**         * 先对自己的逻辑做判断         */        System.out.println(params[0] + " " + params[1]);        if(params != null &&                params.length >= 2 &&                    params[0].length() >= 6 && params[1].length() >= 6){            //检查是否有下一个责任的负责对象            if(next != null) {                return next.MessageOK(params);            }            return true;        }        return false;    }}
public class IDCardHandler extends IHander{    @Override    public boolean MessageOK(String... params) {        System.out.println(params[2]);        if(params != null &&                params.length >= 3 && params[2].equals("xxxx")) {            if(next != null) {                return next.MessageOK(params);            }            return true;        }        return false;    }}
public class VerifyCodeHandler extends IHander {    @Override    public boolean MessageOK(String... params) {        System.out.println(params[3]);        if(params != null && params.length >= 4 && params[3].equals("123456")){            if(next != null)                return next.MessageOK(params);            return true;        }        return false;    }}
public class Test {    public static void main(String[] args) {        IHander userNameAndPasswordHandler = new                UserNameAndPasswordHandler();        IHander iDCardHandler =                new IDCardHandler();        IHander verifyCodeHandler =                new VerifyCodeHandler();        userNameAndPasswordHandler.setNext(iDCardHandler);        iDCardHandler.setNext(verifyCodeHandler);        RegisterMessageHelper registerMessageHelper =                new RegisterMessageHelper(userNameAndPasswordHandler);        String params[] = new String[] {                "hms123", "123546", "xxx", "123456"        };        System.out.println(registerMessageHelper.MessageIsTrue(params));    }}
原创粉丝点击