Como estender a classe enum da classe abstrata?

Tendo algo assim:

public enum Token
{
     FOO("foo", "f"),
     QUIT("quit", "q"),
     UNKNOWN("", "");
     ...

     public parse(String s) {
         for (Token token : values()) {
              ...
              return token;
         }
         return UNKNOWN;
     }
}

Uma aula abstrata:

abstract class Base 
{
    private boolean run;

    Base() {
        run = true;

        while (run) {
             inp = getInput();
             act(inp);
        }
    }

    public boolean act(String s) {
        boolean OK = true;
        switch (Token.parse(inp)) { /* Enum */
             case FOO:
                    do_foo();
                    break;
             case QUIT:
                    run = false;
                    break;
             case UNKNOWN:
                    print "Unknown" + inp;
                    OK = false;
                    break;
             }
         }
         return OK;
    }
}

E o extensor:

class Major extends Base
{

}

O que eu quero é estenderact como sesuper não lida com isso, em seguida, tentar lidar com isso emMajor. Por exemplo. adicionarPRINT_STAT("print-statistics", "ps") - mas ao mesmo tempo deixe oBase padrões de identificador de classe comoQUIT.

Esta é uma abordagem completamente errada?

O que eu fiz até agora é adicionar uma interface Tipicamente:

public interface BaseFace
{
      public boolean act_other(String inp);
}

E na aulaBase implements BaseFace:

      case UNKNOWN:
          OK = act_other(inp);

E na aulaMajor:

  public boolean act_other(String inp) { 
       if (inp.equals("blah")) {
            do_blah();
            return true; 
       }
       return false;
  }

Isso parece um design utilizável?

E uma questão importante:

Existe alguma boa maneira de estender oToken classe de tal forma que eu possa usar a mesma abordagem switch emMajor como emBase? O que eu me pergunto é se há um melhor design e, segundo, se eu tenho que fazer uma nova classe Token paraMajor ou se de alguma forma eu puder estender ou reutilizar o existente.

Edit: Point of concept é ter oBase classe que eu posso facilmente reutilizar em diferentes projetos lidando com vários tipos de entrada.

questionAnswers(4)

yourAnswerToTheQuestion