【23种设计模式】之命令模式

58 阅读1分钟

本文已参与[新人创作礼]活动,一起开启掘金创作之路。

说明

  • 将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。

角色

  • 命令接口
  • 执行类
  • 命令类
  • 方法实现类

代码实现

  • 先创建命令接口,及执行类,创建命令类及方法实现类,这里决定了调用方法实现类的哪种方法,是很值得学习的模式。
public interface ICommand {
    void excute();
}
public class DealCommandSVImpl implements ICommand {
    private IDealSV sv;
    DealCommandSVImpl(){
        sv = new DealSVImpl();
    }
    @Override
    public void excute() {
        sv.doSomeThing();
    }
}
public class Invoker {
    private ICommand command;

    Invoker(ICommand command){
        this.command = command;
    }
    public void action(){
        command.excute();
    }
}
public interface IDealSV {
    void doSomeThing();
}
public class DealSVImpl implements IDealSV {
    @Override
    public void doSomeThing() {
        System.out.println("做事的是我");
    }
}
public class Test {

    public static void main(String[] args){
        ICommand command = new DealCommandSVImpl();
        Invoker invoker = new Invoker(command);
        invoker.action();
    }
}