https://gmlwjd9405.github.io/2018/07/07/command-pattern.html
Example Code
public interface Command {
void execute();
}public class Button {
private Command command;
public Button(Command command){
setCommand(command);
}
public void setCommand(Command command) {
this.command = command;
}
public void pressed() {
command.execute();
}
}public class Alarm {
public void start() {
System.out.println("RING RING");
}
}
public class AlarmStartCommand implements Command{
private Alarm alarm;
public AlarmStartCommand(Alarm alarm){
this.alarm = alarm;
}
@Override
public void execute() {
alarm.start();
}
}public class Lamp {
public void turnOn() {
System.out.println("Lamp On");
}
}
public class LampOnCommand implements Command{
private Lamp lamp;
LampOnCommand(Lamp lamp){
this.lamp = lamp;
}
@Override
public void execute() {
lamp.turnOn();
}
}public class Client {
public static void main(String[] args) {
Button lampButton = new Button(new LampOnCommand(new Lamp()));
Button alarmButton = new Button(new AlarmStartCommand(new Alarm()));
lampButton.pressed();
alarmButton.pressed();
}
}