package com.cheng.zenofdesignpatterns.perfectworld.command_chain.command_name; import com.cheng.zenofdesignpatterns.perfectworld.command_chain.CommandVO; /** * 充当Handler */ public abstract class CommandName { private CommandName nextOperator; public final String handleMessage(CommandVO vo) { // 处理结果 String result = ""; // 判断是否是自己处理的参数 if (vo.getParam().size() == 0 || vo.getParam().contains(this.getOperateParam())) { result = this.echo(vo); } else { if (this.nextOperator != null) { result = this.nextOperator.handleMessage(vo); } else { result = "命令无法执行"; } } return result; } // 设置剩余参数谁来处理 public void setNext(CommandName _operator) { this.nextOperator = _operator; } // 每个处理者都要处理一个后缀参数 protected abstract String getOperateParam(); // 每个处理者都必须实现处理任务 protected abstract String echo(CommandVO vo); }