做外贸需要到外汇管理网站,天津高端模板建站,海外网站速度慢,佳木斯市网站建设命令模式
1、定义
命令模式#xff1a;将一个请求封装为一个对象#xff0c;从而可用不同的请求对客户进行参数化#xff0c;对请求排队或者记录请求日志#xff0c;以及支持可撤销的操作
2、命令模式结构
Command#xff08;抽象命令类#xff09;#xff1a;一般是…命令模式
1、定义
命令模式将一个请求封装为一个对象从而可用不同的请求对客户进行参数化对请求排队或者记录请求日志以及支持可撤销的操作
2、命令模式结构
Command抽象命令类一般是一个抽象类或接口在其中声明了用于执行请求的execute()等方法通过这些方法可以调用请求接收者的相关操作ConcreteCommand具体命令类是抽象命令类的子类实现了抽象类中声明的方法它对应具体的接收者对象将接收者对象的动作绑定其中在实现execute()时将调用接收者对象的相关操作Invoker调用者请求发送者通过命令对象来执行请求Receiver接收者执行与请求相关的操作具体实现对请求的业务处理
3、示例代码
Command
public abstract class Command {protected Receiver receiver;public Command(Receiver receiver) {this.receiver receiver;}public abstract void execute();
}ConcreteCommand
public class ConcreteCommand extends Command {public ConcreteCommand(Receiver receiver) {super(receiver);}Overridepublic void execute() {receiver.receive();}
}Invoker
public class Invoker {private Command command;public void setCommand(Command command) {this.command command;}public void execute() {command.execute();}
}Receiver
public class Receiver {public void receive() {System.out.println(This is Receive class!);}
}Test
public class Client {public static void main(String[] args) {Receiver rec new Receiver();Command cmd new ConcreteCommand(rec);Invoker i new Invoker();i.setCommand(cmd);i.execute();}
}输出
This is Receive class!
4、命令模式的优缺点
优点
降低系统耦合度新的命令可以很容易加入到系统中可以比较容易的设计一个命令队列或组合命令为请求的撤销和恢复操作提供了一种设计和实现方案
缺点
可能会导致系统有过多的具体命令类。
5、命令模式适用环境
抽象出待执行的动作以参数化某个对象在不同的时刻指定排列和执行请求支持取消操作支持修改日志这样当系统崩溃时这些修改可以被重做一遍用构建在原语操作上的高层抽象操作构造一个系统