Buongiorno ,
Ho scoperto questo Pattern che mi ha suggerito
Migliorabile che ringrazio;
ma ho alcuni dubbi che non mi permettono di andare avanti.
Chiedo per cortesia di illuminarmi Ho creato un esempio per semplificare al massimo il problema.
Nell'esempio creo un comando "/open" per aprire una porta dopo averlo digitato nella console in questo modo -->
/open Door.
Il comando
home.open fa uso di una
costante e
non prende nessuna variabile ad esempio
param che in questo caso mi farebbe comodo.
/open è il comando
Door è il parametro
Come passo il parametro dentro
home.open() senza usare una variabile locale dentro main?
Se utilizzassi una variabile dentro main , sarei costretto a creare ogni comando dentro main, perchè diversamente non saprei come
passargliela
Grazie per qualsiasi info
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
/* Creo una classe esempio di nome Home */
Home home = new Home();
/* Leggo i comandi da console */
BufferedReader console = new BufferedReader(new InputStreamReader(System.in));
/* inizializzo il Factory E aggiungo un nuovo comando "/open" */
final CommandFactory cf = CommandFactory.init(home);
cf.addCommand("/open", () -> home.open("Door") ); // <--- qui dovrebbe prendere un parametro , ora c'e solo una costante stringa
/* Attendo l'immissione di un comando */
System.out.print("Enter command:->");
String input = console.readLine();
/* Verifico che sia un comando . Deve iniziare con "/" */
if (input.startsWith("/")){
String[] parsing = input.split(" ");
String cmd = parsing[0].replace("/","");
String param = parsing[1];
/* Eseguo il comando */
cf.executeCommand("/open");
}
}
}
Classe Home
public class Home {
public void open(String door){
System.out.println ("Open " + door);
}
}
incollo per comodità:
https://en.wikipedia.org/wiki/Command_patter