package com.itranswarp.learnjava.listCommand; import com.itranswarp.learnjava.command.*; import java.util.ArrayList; import java.util.List; public class Invoke { private List<Command> commands=new ArrayList<>(); private int index; public Invoke add(Command command){ commands.add(command); return this; } public void invoke(){ for (int i=index;i<commands.size();i++){ commands.get(i).execute(); System.out.println(commands.get(i).toString()); } index=commands.size(); } public void undo(){ if(index>0) { try { commands.get(index - 1).undo(); index -= 1; System.out.println("undo success"); }catch (UnsupportedOperationException e){ index-=1; this.undo(); } } else throw new UnsupportedOperationException("out of range undo"); } public void redo(){ if (index<commands.size()) { if(commands.get(index).isUndoable()) { commands.get(index).execute(); index += 1; System.out.println("redo success"); } else { index+=1; this.redo(); } }else throw new UnsupportedOperationException("out of range redo"); } }
Sign in to make a reply
嗨呀呦嘿吆