什么是命令模式
将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。
命令模式的优缺点
优点: 降低了系统耦合度,新的命令可以很容易添加到系统中去。
缺点:使用命令模式可能会导致某些系统有过多的具体命令类。
举例
我们就以增删改查为例,首先我们需要定义一个 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...