打字猴:1.700481012e+09
1700481012
1700481013
1700481014
1700481015 图34-4 完整类图
1700481016
1700481017 这个类图还是比较简单的,我们来看一下各个类的职责。
1700481018
1700481019 ❑ClassUtils
1700481020
1700481021 ClassUtils是工具类,其主要职责是根据一个接口、父类查找到所有的子类。在不考虑效率的应用中,使用该类可以带来非常好的扩展性。
1700481022
1700481023 ❑CommandVO
1700481024
1700481025 CommandVO是命令的值对象,它把一个命令解析为命令名、选项、操作数,例如”ls-l/usr”命令分别解析为getCommandName、getParam、getData三个方法的返回值。
1700481026
1700481027 ❑CommandEnum
1700481028
1700481029 CommandEnum是枚举类型,是主要的命令配置文件。为什么需要枚举类型?这是JDK 1.5提供的一个非常好的功能,我们在程序中再讲解如何使用它。
1700481030
1700481031 所有的分析都已经完成了,我们来看看程序。程序不复杂,看看类图,应该先写命令的解释,这是项目的核心。我们先来看CommandName抽象类,如代码清单34-1所示。
1700481032
1700481033 代码清单34-1 抽象命令名类
1700481034
1700481035 public abstract class CommandName{
1700481036
1700481037 private CommandName nextOperator;
1700481038
1700481039 public final String handleMessage(CommandVO vo){
1700481040
1700481041 //处理结果
1700481042
1700481043 String result=””;
1700481044
1700481045 //判断是否是自己处理的参数
1700481046
1700481047 if(vo.getParam().size()==0||vo.getParam().contains(this.getOperateParam())){
1700481048
1700481049 result=this.echo(vo);
1700481050
1700481051 }else{
1700481052
1700481053 if(this.nextOperator!=null){
1700481054
1700481055 result=this.nextOperator.handleMessage(vo);
1700481056
1700481057 }else{
1700481058
1700481059 result=“命令无法执行”;
1700481060
1700481061 }
[ 上一页 ]  [ :1.700481012e+09 ]  [ 下一页 ]