java设计模式之三命令模式

xiaoxiao2026-09-02  16

    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(); } }  
转载请注明原文地址: https://www.6miu.com/read-5052305.html

最新回复(0)