设计模式之命令模式
2018-10-29 15:31:40来源:博客园 阅读 ()
1 概念
命令模式属于行为模式,目的将一个请求封装成一个对象。客户端只管发一条或是多条命令或请求,不需要关注接收者是谁,以及如何实现。
2 适用场景和优缺点
适用场景:客户端需要不同时间,发送不同指令;客户端和接受者解藕;系统需要支持undo redo操作。
优点:扩展性强,便于组合命令。
3 命令模式解读
抽象命令Command :定义命令的接口或是抽象类,用于声明执行的execute方法。
具体命令:实现抽象命令,接收接收者指令,并调用接收者的action()方法来完成命令需要执行的操作。
接收者Receiver :实现具体命令,action()
调用者Invoker:持有一个或多个命令对象,同时执行命令对象的execute()。
客户端Client:创建具体的命令,和接收者,然后给具体命令设置接收者,给调用者设置命令对象,并执行调用者方法执行操作。
4 实现示例
1 package Command; 2 3 /** 4 * 抽象命令Command 5 */ 6 public abstract class Command { 7 protected void execute() { 8 } 9 }
1 package Command; 2 3 /** 4 * 具体命令 5 */ 6 public class CommandHandle extends Command { 7 8 private Receiver receiver; 9 private String foodName; 10 11 public CommandHandle(Receiver receiver, String foodName) { 12 this.receiver = receiver; 13 this.foodName = foodName; 14 } 15 16 @Override 17 protected void execute() { 18 receiver.action(foodName); 19 } 20 }
1 package Command; 2 3 /** 4 * 接收者Receiver 5 */ 6 public class Receiver { 7 public void action(String foodName) { 8 System.out.println("接收者Receiver 开始。"); 9 if ("红烧排骨".equals(foodName)) { 10 System.out.println(foodName + "需要准备排骨和胡萝卜。"); 11 } 12 else if ("酱肉丝".equals(foodName)) { 13 System.out.println(foodName + "需要准备精瘦肉和大葱。"); 14 } 15 else { 16 System.out.println(foodName + ":食材不足。"); 17 } 18 System.out.println("接收者Receiver 结束。"); 19 } 20 }
1 package Command; 2 3 /** 4 * 客户端Client 5 */ 6 public class Client { 7 public static void main(String[] args) { 8 Receiver receiver = new Receiver(); 9 Invoker invoker = new Invoker(); 10 Command command1 = new CommandHandle(receiver, "红烧排骨"); 11 Command command2 = new CommandHandle(receiver, "酱肉丝"); 12 invoker.setCommand(command1); 13 invoker.setCommand(command2); 14 invoker.doInvoke(); 15 } 16 }
运行结果:
接收者Receiver 开始。
红烧排骨需要准备排骨和胡萝卜。
接收者Receiver 结束。
接收者Receiver 开始。
酱肉丝需要准备精瘦肉和大葱。
接收者Receiver 结束。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:spring-boot分页插件
下一篇:spring boot 发送邮件
- Linux简单命令的学习 2020-06-10
- 设计模式-委派/策略模式 2020-06-09
- 深入理解:设计模式中的七大设计原则 2020-06-07
- 设计模式---类之间的关系知多少 2020-06-07
- 你与面试官所了解的单例模式并不一样! 2020-06-06
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash