I am about to implement a API for my TCP/IP server written in Java. Right now I
ID: 639541 • Letter: I
Question
I am about to implement a API for my TCP/IP server written in Java. Right now I have a temporary method that takes a String, executes a command based on the String and returns a String basically like the following.
public void communicate(BufferedReader in, PrintWriter out) {
while(true) {
out.println(handleCommand(in.readLine()));
}
}
private String handleCommand(String command) {
if (command.equals("command1") {
// do stuff
return "Command 1 executed";
} else if (command.equals("command2") {
// do some other stuff
return "Command 2 executed";
}
}
I really want to do something more extensible, smarter and stateful, so I could handle more complex and stateful commands and without the method/class getting bloated.
How would you start?
Suggestions, ideas, or links for further reading are very welcome.
Explanation / Answer
I'd suggest using an interface, such as:
interface Command {
public boolean doCommand();
}
enum CommandNames {
COMMAND1("COMMAND1"),
COMMAND2("COMMAND2");
// other enum stuff
// Gets a command based on a name
public static CommandNames getCommand(String name);
}
Usage:
Map<CommandNames, Command> commands;
private String handleCommand(String command) {
Command command = commands.get(CommandNames.getCommand(command));
command.handleCommand();
}
First draft, but it ought to at least give you some ideas.
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.