Реализация паттерна команды

Изучаю java по видеоурокам, на курсах дали задачу реализовать паттерн "комманды".

В качестве аргументов метод main будет получать команды. Например, для команды echo Hello World, метод main получит массив с ДВУХ элементов { "echo", "Hello World"}. Для команды date now также будет ДВА аргументы { "date", "now"}.

При реализации воспользуйтесь поддержкой полиморфизма времени выполнения. Фактически Вам нужно создавать экземпляр реализации конкретной команды в зависимости от набора входных данных. Типом ссылки на конкретный экземпляр будет Command, таким образом вызов конкретной команды будет сведено к command.execute() В случае если команда не известна, или содержит не верное количество аргументов выведите на экран надпись Error

Реализовал сам паттерн,не могу понять как сделать чтобы вызов был как в задании.

'''java

package com.tasks5.command;

public class Application {
    public static void main(String[] args){
        App a= new App();
        User u= new User(new help(a), new echo(a),new date(a),new exit(a));
        u.help();
        u.echo();
        u.date();
        u.exit();
        //YOUR CODE COMES HERE
    }
}
interface Command   {void execute();}
class App
{
    void help() {System.out.println("Help executed");}
    void echo() {System.out.println("HelloWorld");}
    void date() {System.out.println(System.currentTimeMillis());}
    void exit() {System.out.println("Goodbye!");}
}
    //command "help"
class help implements Command
    {
    App command= new App();
    public help(App command) {this.command = command;}
    public void execute() {command.help();}     
    }
    //command "echo text"
class echo implements Command
    {
    App command= new App();
    public echo(App command) {this.command = command;}
    public void execute() {command.echo();}
    }
    //command "date now"
class date implements Command
    {
    App command= new App();
    public date(App command) {this.command = command;}
    public void execute() {command.date();}
    }
    //command "exit"
class exit implements Command
    {
    App command= new App();
    public exit(App command) {this.command = command;}
    public void execute() {command.exit();}
    }
//Vizov commandi;
class User
{
Command help;
Command echo;
Command date;
Command exit;
public User(Command help, Command echo, Command date, Command exit) {
    this.help = help;
    this.echo = echo;
    this.date = date;
    this.exit = exit;
}
void help() {help.execute();}
void echo() {echo.execute();}
void date() {date.execute();}
void exit() {exit.execute();}
}

'''


Ответы (0 шт):