Во-первых, я думаю, вы должны понимать, как работает шаблон проектирования и как классы взаимодействуют друг с другом.Вы можете увидеть пример здесь https://refactoring.guru/design-patterns/command.
Мой способ сделать это:
Command.java
// concrete commands will implement this interface
// you can also use an abstract class if you want to have certain attributes, such as a TicketSystem
public interface Command {
// this method can be set to return something useful instead of void, if needed
void execute();
}
AddTicketCommand.java
public class AddTicketCommand implements Command {
// TicketSystem and Ticket attributes
// constructor that initializes the attributes
@Override
public void execute() {
// add the Ticket to the TicketSystem
}
}
Invoker.java
public class Invoker {
private Command command;
public void setCommand(Command command) {
this.command = command;
}
public void invoke() {
command.execute();
}
}
Поэтому, когда вы хотите использовать определенную команду, вы устанавливаете ее соответственно.Например: invoker.setCommand(new AddTicketCommand(new TicketSystem(), new Ticket()))
, а затем вызвать его с помощью invoker.invoke()
.
Надеюсь, это помогло!