kłopoty z polimorfizmem pokonują te instrukcje przełączania / sprawy

Kontynuacja poprzednich pytań (tutaj, itutaj), Zaimplementowałem podstawowy wzorzec poleceń, stworzyłem klasy poleceń i zakodowałem do interfejsu, więc kiedy używane jest dowolne polecenie, wywołajexecute() metoda.

Jednak wciąż nie potrafię potrząsnąć tymi stwierdzeniami: czytam każdy znak z ciągu głównego / decyzyjnego, który składa się z losowych, powtarzających się znaków A, B, C lub D, a następnie odzyskuję powiązaną implementację polecenia z mapy i wywołaj jego metodę wykonania.

Mój projekt był taki:

public interface Command {
    void execute();
}

public class CommandA implements Command{
  //implements execute() method
}

private Map myMap= new HashMap();
myMap.put("A", new CommandA);
myMap.put("B", new CommandB);
myMap.put("C", new CommandC);
myMap.put("D", new CommandD);

Ale potem, kiedy czytam każdą instrukcję, ponownie muszę uciekać się do instrukcji przypadku:

switch(instructionFromString){
case 'A':{myMap.get("A").execute(); break;}
case 'B':{myMap.get("B").execute(); break;}
case 'C':{myMap.get("C").execute(); break;}
case 'D':{myMap.get("D").execute(); break;}

Oczywiście, gdzieś po drodze udało mi się pokonać przewagę polimorfizmu przeciwko opisom przypadków.

Czy może to być rodzaj struktury danych, którą wybrałem do przechowywania moich poleceń? Może to być stała struktura danych, z której można wyciągać te polecenia.

Inną rzeczą, która przychodzi mi do głowy, jest nazewnictwo klucza / wartości, którego użyłem na mapie. Sposób, w jaki próbowałem koncepcyjnie połączyć każde przechowywane polecenie z powiązaną z nim instrukcją? tj. implementacja polecenia „A” jest przechowywana na mapie za pomocą klawisza „A”, co może pasować do odpowiedniej instrukcji „A”? Wydaje mi się to jednak mało prawdopodobne.

Jakakolwiek wskazówka lub dalsza rada dotycząca mojego następnego kroku, aby raz na zawsze usunąć te stwierdzenia, byłaby bardzo ceniona. Z góry bardzo dziękuję

questionAnswers(3)

yourAnswerToTheQuestion