当我们要对某一个对象进行一系列操作的时候,通常要怎么做呢?
比如对一个“电脑”对象进行打字操作,一般的流程是这样的:
computer.power();//通电开机
computer.setInputMethod();//设置输入法
computer.pressKey();//敲击键盘打字
这类操作写下来。。。代码就变得不优雅了呀!!!而且随着你的操作越来越多,这些代码会越来越长。并且如果在其它地方很难直接复用。
那么如何优雅的解决这类问题呢?
定义一个链表操作对象!!!
首先我们定义一个Op类
public final class Op{
Op next;
String cmd;
}
再写一个执行Op对象的方法
public void execOp(Op op){
if(op == null) return;
switch(op.cmd) {
case "power":
computer.power();
break;
case "inputMethod":
computer.setInputMethod();
break;
case "pressKey":
computer.pressKey();
break;
}
execOp(op.next);//在这里自己调用自己
}
通过这种方式我们再处理操作的时候不就更方便了吗?代码不就优雅了吗?而且代码的复用性也增加了,嗯真香
当然这个时候肯定有小伙伴会说,那这个东西创建Op指令的时候也是一样的麻烦啊。。。怎么会呢?
简直优雅的不要不要的好吗
public Op createOp(String...cmds){
if(cmd == null) return null;
Op opPre = new Op();
Op op = opPre;
for (String s:cmds) {
if (op.next == null) op.next = new Op();
op.next.cmd = s;
op = op.next;
}
return opPre.next;
}
将指令作为数组传进去,然后就能得到一个Op链表命令,再通过execOp方法去执行完成。。。优雅的不行呀