打字猴:1.700481551e+09
1700481551 CommandVO解析一个命令,规定一个命令必须有3项:命令名、选项、操作数。如果没有呢?那就以长度为零的字符串代替,通过这样的一个约定可以大大降低命令解析的开发工作。注意getParam参数中的返回值:
1700481552
1700481553 new ArrayList(new HashSet(this.paramList));
1700481554
1700481555 为什么要这么处理?HashSet具有值唯一的优点,这样处理就是为了避免出现两个相同的参数,比如对于”ls-l-l-s”这样的命令,通过getParam返回的参数是几个呢?回答是两个:l选项和s选项。
1700481556
1700481557 我们再来看Invoker类,它是负责命令分发的类,如代码清单34-11所示。
1700481558
1700481559 代码清单34-11 命令分发
1700481560
1700481561 public class Invoker{
1700481562
1700481563 //执行命令
1700481564
1700481565 public String exec(String_commandStr){
1700481566
1700481567 //定义返回值
1700481568
1700481569 String result=””;
1700481570
1700481571 //首先解析命令
1700481572
1700481573 CommandVO vo=new CommandVO(_commandStr);
1700481574
1700481575 //检查是否支持该命令
1700481576
1700481577 if(CommandEnum.getNames().contains(vo.getCommandName())){
1700481578
1700481579 //产生命令对象
1700481580
1700481581 String className=CommandEnum.valueOf(vo.getCommandName())
1700481582
1700481583 .getValue();
1700481584
1700481585 Command command;
1700481586
1700481587 try{
1700481588
1700481589 command=(Command)Class.forName(className).newInstance();
1700481590
1700481591 result=command.execute(vo);
1700481592
1700481593 }catch(Exception e){
1700481594
1700481595 //TODO异常处理
1700481596
1700481597 }
1700481598
1700481599 }else{
1700481600
[ 上一页 ]  [ :1.700481551e+09 ]  [ 下一页 ]