设计模式-行为型-命令模式

107 阅读1分钟

简介

命令模式是行为型模式的一种,其将一系列命令进行封装,当我们需要调用某个命令时,不需要直接调用对象本身去执行对应的方法。在生活中,对象模式也比较常见,比如我们乘坐的电梯,其对应的有上楼、下楼、停止等命令,在代码实现过程中,我们不会直接去操作电梯对象,而是去操作对应的命令类,这样就有利于我们代码后期的扩展。下面以电梯的例子来Demo。

Demo示例

1.首先定义电梯类,定义其中的上升、下降和停止三个方法,其中每个方法对应一个命令类。

public class Elevator {
    public void up() {
        System.out.println("elevator up");
    }

    public void down() {
        System.out.println("elevator down");
    }

    public void stop() {
        System.out.println("elevator stop");
    }
}

2.定义电梯命令的接口,上升、下降和停止三个类实现该接口。

public interface Command {
    void execute();
}
public class UpCommand implements Command{

    private Elevator elevator;
    public UpCommand(Elevator elevator) {
        this.elevator = elevator;
    }


    @Override
    public void execute() {
        this.elevator.up();
    }
}
public class DownCommand implements Command{
    private Elevator elevator;
    public DownCommand(Elevator elevator) {
        this.elevator = elevator;
    }

    @Override
    public void execute() {
        this.elevator.down();
    }
}
public class StopCommand implements Command{
    private Elevator elevator;
    public StopCommand(Elevator elevator) {
        this.elevator = elevator;
    }

    @Override
    public void execute() {
        this.elevator.stop();
    }
}

3.客户端调用

public class Test {
    public static void main(String[] args) {
        Elevator elevator = new Elevator();
        Command stopCommand = new StopCommand(elevator);
        Command upCommand = new UpCommand(elevator);
        Command downCommand = new DownCommand(elevator);

        upCommand.execute(); // elevator up
        stopCommand.execute(); // elevator stop
        downCommand.execute(); // elevator down

    }
}