【设计模式】命令模式

本文介绍了命令模式的概念,通过将请求封装为对象,实现了客户端的参数化,支持请求的排队和日志记录,同时提供了撤销和恢复功能。以CRUD操作为例,展示了如何创建CRUD接口及其实现类,并利用Command类组织和执行这些操作。通过这种方式,系统耦合度降低,但可能产生较多具体命令类。
摘要由CSDN通过智能技术生成

什么是命令模式

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

命令模式的优缺点

优点: 降低了系统耦合度,新的命令可以很容易添加到系统中去。

缺点:使用命令模式可能会导致某些系统有过多的具体命令类。

举例

我们就以增删改查为例,首先我们需要定义一个 CRUD 的接口,然后定义四个 CRUD 的实现类,最后定义一个 Command 类,该类的作用是将所有的指令插入到该类中的 arrayList 中去,最后依次执行 arrayList 中的指令。
在这里插入图片描述

CRUD

public interface CRUD {
    void execute();
}

Insert

public class Insert implements CRUD {
    @Override
    public void execute() {
        System.out.println("insert succeed...");
    }
}

Delete

public class Delete implements CRUD {
    @Override
    public void execute() {
        System.out.println("delete succeed...");
    }
}

Update

public class Update implements CRUD {
    @Override
    public void execute() {
        System.out.println("update succeed...");
    }
}

Query

public class Query implements CRUD {
    @Override
    public void execute() {
        System.out.println("query succeed...");
    }
}

Command

public class Command {
    private List<CRUD> arrayList = new ArrayList<>();

    public void addCommand(CRUD crud){
        arrayList.add(crud);
    }

    public void execute(){
        for (CRUD crud : arrayList) {
            crud.execute();
        }
    }
}

main

public class CommandDemo {
    public static void main(String[] args) {
        Command command = new Command();

        command.addCommand(new Update());
        command.addCommand(new Query());
        command.addCommand(new Insert());
        command.addCommand(new Delete());

        command.execute();
    }
}

结果:

update succeed...
query succeed...
insert succeed...
delete succeed...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值