当前位置: 首页 > 后端技术 > Java

Command模式在SAPSpartacus中的具体应用

时间:2023-04-01 14:21:28 Java

在面向对象编程中,Command模式是一种行为设计模式,其中对象用于封装执行一个动作或稍后触发事件所需的所有信息。这些信息包括方法名称、拥有该方法的对象以及方法参数的值。与命令模式相关的四个术语是命令、接收者、调用者和客户端。命令对象了解接收者并调用接收者的方法。接收方方法的参数值存储在命令中。执行这些方法的接收者对象也通过聚合存储在命令对象中。然后,当command中的execute()方法被调用时,接收者就会完成工作。调用者对象知道如何执行命令,并且可以选择记录命令执行。调用者对具体命令一无所知,只知道命令接口。调用者对象、命令对象和接收者对象由客户端对象持有,由客户端决定哪些接收者对象分配给命令对象,哪些命令分配给调用者。客户端决定在哪些点执行哪些命令。为了执行命令,它将命令对象传递给调用者对象。下面是命令模式在SAPSpartacus中的具体实现。在单击电子邮件地址之前,不会加载用户模块。点击后的HTTP请求:http://localhost:4299/feature...点击保存按钮后,调用其表单的onSubmit方法:onSubmit调用this.service.save方法。UpdateEmailComponentService依赖于userEmail,其类型为UserEmailFacade,其update方法以命令方式实现。最后,门面委托给具体的实现类:使用依赖注入实例化实现类:首先使用this.command.create创建一个Command实例,类型为Command,传入一个类型参数,包括两个字段:password和新的Uid。create方法接收两个参数。commandFactory是一个工厂函数,它接收要执行的特定操作的输入参数负载。这里具体执行了工厂函数:生成一个新的命令实例,然后返回。稍后调用电子邮件服务的更新方法。调用刚刚返回的命令实例的execute方法。进入刚刚返回的动态创建的命令实例的execute方法。最后调用到了我们调用create创建命令实例时传入的工厂方法的包装代码:cmd是工厂函数的入参:这里工厂函数本身也是rxjs调用的,connector.updateEmail第30行的方法没有直接执行。该方法的具体调用还是通过command.execute中的commands$.next执行。最后获取currentid作为参数传给updateemailconnector:修改邮件地址的url:https://localhost:9002/occ/v2...payload:无响应。更多Jerry原创文章在这里:《王子熙》: