命令模式

  • 抽象命令类 command:

    • abstract execute方法:执行该命令(即自己)
  • 具体命令类(针对不同场景,有不同的命令)

    • 实现 execute方法:协调每个ReceiverImpl的业务逻辑
    • 依赖的多个ReceiverImpl的属性和setter
  • 抽象接受者类 Receiver:

    • abstract doSomething方法:执行所属自己职能的业务逻辑。
  • 接受者实现类 ReceiverImpl:

    • 实现 doSomething 方法
  • 负责人 Invoker类

    • 抽象命令属性,带setter
    • action方法:调用command.execute方法

使用例子

invoker = new Invoker();
command1 = new CommandImpl1();
invoker.setCommand(command1);
invoker.action();

总结

优点

  1. Invoker 和 Receiver 解耦
  2. 针对业务场景的变化,只需要修改或增加Receiver,并增加CommandImpl来应对新的变化,Invoker无需改动,只管接受新命令CommandImpl即可
  3. ReceiverImpl 类似同事,只管做好自己的职能,提供专属业务方法;Command类似中介,N个场景有N个CommandImpl,协调各个ReceiverImpl合作达到业务场景需求;Invoker可以理解成暴露给外部的服务。

缺点

随着业务场景的多样性,CommandImpl的数量可能会膨胀不好管理。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容