package com.itranswarp.learnjava.state;
public interface State {
String init();
String reply(String input);}
package com.itranswarp.learnjava.state;
public class DisconnectedState implements State {
@Override
public String init(){return"Bye!";}
@Override
public String reply(String input){return"";}}
package com.itranswarp.learnjava.state;
public class ConnectedState implements State {
@Override
public String init(){return"Hello, I'm Bob.";}
@Override
public String reply(String input){if(input.endsWith("?")){return"Yes. " + input.substring(0, input.length() - 1) + "!";}if(input.endsWith(".")){return input.substring(0, input.length() - 1) + "!";}return input.substring(0, input.length() - 1) + "?";}}
package com.itranswarp.learnjava.state;
public class BotContext {
private State state = new DisconnectedState();
public String chat(String input){if("hello".equalsIgnoreCase(input)){
state = new ConnectedState();return state.init();}elseif("bye".equalsIgnoreCase(input)){
state = new DisconnectedState();return state.init();}return state.reply(input);}}