电视机是请求的接收者,遥控器是请求的发送者,遥控器上有一些按钮,不同的按钮对应电视机的不同操作。抽象命令角色由一个命令接口来扮演,有三个具体的命令类实现了抽象命令接口,这三个具体命令类分别代表三种操作:打开电视机、关闭电视机和切换频道。显然,电视机遥控器就是一个典型的命令模式应用实例。
Command.java
package TVCmd;public abstract class Command {public abstract void execute();
}
Televlsion.java
package TVCmd;public class Televlsion {public void open() {System.err.println("打开电视机。。。。");}public void close() {System.err.println("关闭电视机。。。。");}public void change() {System.err.println("换台。。。。");}}
TVOpenCommand.java
package TVCmd;public class TVOpenCommand extends Command {private Televlsion tv=new Televlsion();@Overridepublic void execute() {// TODO Auto-generated method stubtv.open();}}
TVCloseCommand.java
package TVCmd;public class TVCloseCommand extends Command {private Televlsion tv=new Televlsion();@Overridepublic void execute() {// TODO Auto-generated method stubtv.close();}}
TVChangeCommand.java
package TVCmd;public class TVChangeCommand extends Command {private Televlsion tv=new Televlsion();@Overridepublic void execute() {// TODO Auto-generated method stubtv.change();}}
Controller.java
package TVCmd;public class Controller {private Command command; public Controller(Command command) {this.command=command;}public void function() {command.execute();}}
Client.java
package TVCmd;public class Client {public static void main(String[] args) {// TODO Auto-generated method stubCommand cmd,cmd2,cmd3;//打开电视机cmd=new TVOpenCommand();Controller c1=new Controller(cmd);c1.function();//关闭电视机cmd2=new TVCloseCommand();Controller c2=new Controller(cmd2);c2.function();//换台cmd3=new TVChangeCommand();Controller c3=new Controller(cmd3);c3.function();}}
运行截图: