Java中的命令模式

来源:互联网 发布:mac安装双系统win8 编辑:程序博客网 时间:2024/05/27 20:23

命令模式将请求封装为对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作

举个例子

场景:设计一个开关灯的命令

命令接口

package com.zw.mymaven;public interface Command {void excute();}

命令接受者 灯

package com.zw.mymaven;public class Light {public void turnon() {System.out.println("The light is on");}public void turnoff() {System.out.println("The light is off");}}

命令实现类

package com.zw.mymaven;public class Commandon implements Command {private Light mylight;public Commandon(Light light) {mylight = light;}public void excute() {mylight.turnon();}}

package com.zw.mymaven;public class CommandOff implements Command {private Light mylight;public CommandOff(Light light) {mylight = light;}public void excute() {mylight.turnoff();}}

遥控器

package com.zw.mymaven;public class Control {private Command commandon;private Command commandoff;public Control(Command on, Command off) {commandon = on;commandoff = off;}public void turnon() {commandon.excute();}public void turnoff() {commandoff.excute();}}

测试类

package com.zw.mymaven;public class TestCommand {    public static void main(String[] args) {        Light light = new Light();        Commandon on = new Commandon(light);        CommandOff off = new CommandOff(light);        Control control = new Control(on, off);        control.turnon();        control.turnoff();    }}




0 0