现在的位置: 首页 > 综合 > 正文

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

2017年12月08日 ⁄ 综合 ⁄ 共 3407字 ⁄ 字号 评论关闭

行为模式涉及到算法和对象间职责的分配。
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();
          }
    }
    //-----------------------------------------------------

抱歉!评论已关闭.