Command命令模式: Command模式通过被称为Command的类封装了对目标对象的调用行为以及调用参数。将一个请求封装为一个对象,从而使你不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 在此写了7个java类来描述说明Command设计模式的实现方式; 1、 Control.java 命令控制者对象类 (命令控制器在这里至关重要,相当于遥控器的作用) 2、 Tv.java 命令接收者对象类 3、 Command.java 命令接口类 4、 CommandChannel.java 频道切换命令类 5、 CommandOff.java 关机命令类 6、 CommandOn.java 开机命令类 7、 CommandTest.java 带有main方法的测试类(命令发送者) 如下所示:
package lucene.kameilong.conmmand; public class TV { private int currentChanl = 0; public void trunOn() { System.out.println("TV is turnning on......"); } public void trunOff() { System.out.println("TV is turnning off......"); } public void changeChanl(int chanl) { this.currentChanl = chanl; System.out.println("Now TV chanle is " + currentChanl + "......"); } } package lucene.kameilong.conmmand; public class OnCommand implements Command { private TV myTv; public OnCommand(TV tv) { this.myTv = tv; } public void excute() { myTv.trunOn(); } } package lucene.kameilong.conmmand; public interface Command { public void excute(); }package lucene.kameilong.conmmand; public class CommandTest { public static void main(String[] args) { TV myTv = new TV(); OnCommand on = new OnCommand(myTv); OffCommand off = new OffCommand(myTv); ChangeCommand change = new ChangeCommand(myTv, 3); Control control = new Control(on, off, change); control.turnOn(); control.chageChanl(); control.turnOff(); } } package lucene.kameilong.conmmand; public class OffCommand implements Command { private TV myTv; public OffCommand(TV tv) { this.myTv = tv; } public void excute() { myTv.trunOff(); } } package lucene.kameilong.conmmand; public class ChangeCommand implements Command { private TV myTv; private int chanl; public ChangeCommand(TV tv, int chanl) { this.myTv = tv; this.chanl = chanl; } public void excute() { myTv.changeChanl(chanl); } } package lucene.kameilong.conmmand; public class Control { private Command on, off, change; public Control(OnCommand on, OffCommand off, ChangeCommand change) { this.on = on; this.off = off; this.change = change; } public void turnOn() { on.excute(); } public void turnOff() { off.excute(); } public void chageChanl() { change.excute(); } }
