Discuss / Java / 其他的更改太细碎,就不上传了

其他的更改太细碎,就不上传了

Topic source
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");
    }
}


  • 1

Reply