package com.greenorange.promotion.light; public class CommandPatternExample { // 命令接口 public interface Command { void execute(); } // 接收者类:开灯 public static class Light { public void on() { System.out.println("灯已开启"); } public void off() { System.out.println("灯已关闭"); } } // 接收者类:开电视 public static class TV { public void on() { System.out.println("电视已开启"); } public void off() { System.out.println("电视已关闭"); } } // 具体命令类:开灯命令 public static class LightOnCommand implements Command { private Light light; public LightOnCommand(Light light) { this.light = light; } @Override public void execute() { light.on(); // 执行开灯操作 } } // 具体命令类:开电视命令 public static class TVOnCommand implements Command { private TV tv; public TVOnCommand(TV tv) { this.tv = tv; } @Override public void execute() { tv.on(); // 执行开电视操作 } } // 调用者类:遥控器 public static class RemoteControl { private Command command; public void setCommand(Command command) { this.command = command; } public void pressButton() { command.execute(); // 执行命令 } } // 测试类:命令模式的客户端 public static void main(String[] args) { // 创建接收者 Light light = new Light(); TV tv = new TV(); // 创建命令 Command lightOn = new LightOnCommand(light); Command tvOn = new TVOnCommand(tv); // 创建遥控器 RemoteControl remote = new RemoteControl(); // 开灯 remote.setCommand(lightOn); remote.pressButton(); // 输出: 灯已开启 // 开电视 remote.setCommand(tvOn); remote.pressButton(); // 输出: 电视已开启 } }