import java.util.ArrayList;
import java.util.List;

public class Capitulo11Design {
    static final class Historico {
        private final List<String> linhas = new ArrayList<>();

        void registrarInteracao(String entrada, String resposta) {
            if (entrada == null || entrada.isBlank()) {
                throw new IllegalArgumentException("Entrada obrigatória.");
            }
            linhas.add("USUÁRIO: " + entrada.strip());
            linhas.add("BOT: " + resposta);
        }

        List<String> consultar() {
            return List.copyOf(linhas);
        }
    }

    static final class ProcessadorComandos {
        String responder(String comando) {
            return switch (comando) {
                case "oi" -> "Olá!";
                case "ajuda" -> "Comandos: oi, ajuda e dica.";
                case "dica" -> "Prefira composição para relações do tipo tem-um.";
                default -> "Não entendi.";
            };
        }
    }

    public static void main(String[] args) {
        Historico historico = new Historico();
        ProcessadorComandos processador = new ProcessadorComandos();
        String resposta = processador.responder("dica");
        historico.registrarInteracao("dica", resposta);
        System.out.println(historico.consultar());
    }
}
