Задание заключается в следующем: создайте приложение, которое будет реализовывать паттерн Команда.
Реализуйте интерфейс Command:
public interface Command { public void execute(); }
для поддержки следующих команд:
- help
Выводит на экран строку Help executed
- echo
Выводит на экран строку указан как текст
Например
echo «Hello World«
выведет на экран
Hello World
- date now
Выводит на экран текущую дату в миллисекундах с 1 января 1970 года. Для вывода даты воспользуйтесь строкой
System.out.println(System.currentTimeMillis());
- exit
Выводит на экран Goodbye!
Каждая из реализаций это отдельный класс!
Всю логику обработки команд реализуйте в классе:
public class Application { public static void main(String[] args){ //YOUR CODE COMES HERE } }
В качестве аргументов метод main будет получать команды. Например, для команды echo Hello World, метод main получит массив с ДВУХ элементов { «echo«, «Hello World«}. Для команды date now также будет ДВА аргументы { «date«, «now«}.
При реализации воспользуйтесь поддержкой полиморфизма времени выполнения. Фактически Вам нужно создавать экземпляр реализации конкретной команды в зависимости от набора входных данных. Типом ссылки на конкретный экземпляр будет Command, таким образом вызов конкретной команды будет сведено к command.execute ().
Подсказка: для передачи данных в конкретную реализацию команды воспользуйтесь конструктором.
В случае если команда не известна, или содержит неверное количество аргументов выведите на экран надпись Error.
Уделите особое внимание проверке входных данных! Например: args может быть null или пустой.
Обратите внимание! Все Ваши классы должны находиться в пакете com.tasks5.command Это означает, что каждый файл должен содержать package com.tasks5.command; в начале файла.
Содержание всех ваших файлов вставьте в окно ниже друг под другом. Убедитесь, что код каждого из классов начинается строкой package com.tasks5.command;.
Вариант реализации:
package com.tasks5.command; public class Application { static class Help implements Command { @Override public void execute() { System.out.println("Help executed"); } } static class Now implements Command { @Override public void execute() { System.out.println(System.currentTimeMillis()); } } static class Echo implements Command { private String argument; Echo(String argument) { this.argument = argument; } @Override public void execute() { System.out.println(argument); } } static class Exit implements Command { @Override public void execute() { System.out.println("Goodbye!"); } } public static void main(String[] args){ //YOUR CODE COMES HERE Command command; if (args == null || args.length == 0) { System.out.println("Error"); }else { switch (args[0]) { case "help": if (args.length == 1 && args[0].equals("help")) { command = new Help(); command.execute(); } else { System.out.println("Error"); } break; case "echo": if (args.length == 2 && args[0].equals("echo")) { command = new Echo(args[1]); command.execute(); } else { System.out.println("Error"); } break; case "date": if (args.length == 2 && args[1].equals("now")) { command = new Now(); command.execute(); }else { System.out.println("Error"); } break; case "exit": if (args.length == 1 && args[0].equals("exit")) { command = new Exit(); command.execute(); } else { System.out.println("Error"); } break; default: System.out.println("Error"); } // command.execute(); } } } package com.tasks5.command; public interface Command { public void execute(); }
Читайте больше по теме: