设计模式-结构型模式-命令

行为模式涉及到算法和对象间职责的分配。
COMMAND:将一个请求封装成一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤消操作。

 

package behaviour.command;
/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2002</p>
 * <p>Company: The9.com</p>
 * @author Jerry Shen
 * @version 0.5
 */

public interface Command {
    public abstract void execute();
}

 

 

 

package behaviour.command;
/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2002</p>
 * <p>Company: The9.com</p>
 * @author Jerry Shen
 * @version 0.5
 */

public class TestCommand {

    public TestCommand() {
    }
    public static void main(String[] args) {
           Light testLight = new Light();
           LightOnCommand testLOC = new LightOnCommand(testLight);
           LightOffCommand testLFC = new LightOffCommand(testLight);
           Switch testSwitch = new Switch(testLOC, testLFC);
           testSwitch.flipUp( );
           testSwitch.flipDown( );
          
           Fan testFan = new Fan( );
           FanOnCommand foc = new FanOnCommand(testFan);
           FanOffCommand ffc = new FanOffCommand(testFan);
           Switch ts = new Switch( foc,ffc);
           ts.flipUp( );
           ts.flipDown( );
    }
}

    //----------  Class Fan  ------------------------------
    class Fan {
          public void startRotate() {
                 System.out.println("Fan is Rotating now !");
          }
          public void stopRotate() {
                 System.out.println("Fan is stop now !");
          }
    }
    //-----------------------------------------------------
    //----------  Class Light  ----------------------------
    class Light {
          public void turnOn() {
                 System.out.println("Light is on now !");
          }
          public void turnOff() {
                 System.out.println("Light is off now !");
          }
    }
    //-----------------------------------------------------
    //----------  Class Switch  ---------------------------
    class Switch {
          private Command UpCommand, DownCommand;
          public Switch (Command Up, Command Down) {
                 UpCommand = Up;
                 DownCommand = Down;
          }
          void flipUp() {
               UpCommand.execute();
          }
          void flipDown() {
               DownCommand.execute();
          }
    }
    //-----------------------------------------------------
    //----------  Class LightOnCommand  -------------------
    class LightOnCommand implements Command {
        private Light myLight;
        public LightOnCommand (Light L) {
               myLight = L;
        }
        public void execute() {
               myLight.turnOn();
        }
    }
    //-----------------------------------------------------
    //----------  Class LightOffCommand  ------------------
    class LightOffCommand implements Command {
        private Light myLight;
        public LightOffCommand (Light L) {
               myLight = L;
        }
        public void execute() {
               myLight.turnOff();
        }
    }
    //-----------------------------------------------------
    //----------  Class FanOnCommand  ---------------------
    class FanOnCommand implements Command {
          private Fan myFan;
          public FanOnCommand (Fan F) {
                 myFan = F;
          }
          public void execute() {
                 myFan.startRotate();
          }
    }
    //-----------------------------------------------------
    //----------  Class FanOffCommand  ---------------------
    class FanOffCommand implements Command {
          private Fan myFan;
          public FanOffCommand (Fan F) {
                 myFan = F;
          }
          public void execute() {
                 myFan.stopRotate();
          }
    }
    //-----------------------------------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值