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();  
    }  
}