设计模式之命令模式+实例

编程入门 行业动态 更新时间:2024-10-24 22:22:57

设计<a href=https://www.elefans.com/category/jswz/34/1771241.html style=模式之命令模式+实例"/>

设计模式之命令模式+实例

定义

命令模式是一种对象行为型模式,命令模式将一个请求封装成一个对象,从而使我们可以用不同的请求对客户进行参数化,使发送者和接收者完全解耦。
发送者和接收者之间没有直接引用关系,发送请求的对象只需知道如何发送请求,而不必知道如何执行。

角色

Command:抽象命令类
ConcreteCommand:具体命令类
Invoker:调用者(命令发出者)
Receiver:接收者(执行者)
Client:客户类

实例

下面用命令模式模拟饮品店订单流程

package command;
/** 订单对象*/
import java.util.HashMap;public class Order {private int id;private HashMap<String,Integer>fruitmap;public Order() {//水果名称,数量fruitmap=new  HashMap<String,Integer>();}public int getId() {// TODO Auto-generated method stubreturn id;}public HashMap<String, Integer> getFruitmap() {return fruitmap;}public void setFruitmap(String fruitkind,int quantity) {this.fruitmap.put(fruitkind, quantity);}public void setId(int id) {this.id = id;}}
package command;
/** 具体操作*/
public class Operator {
//榨汁员工public void MarkFruit(Order order) {// TODO Auto-generated method stubString str="";for(String key:order.getFruitmap().keySet()) {str+=key+order.getFruitmap().get(key);}System.out.println("黑暗混合果汁:"+str);}}
package command;
/** 抽象命令类*/
public interface Command {void execute();}
package command;
/** 具体命令类* 封装的命令对象*/
public class OrderCommand implements Command {private Operator receiver;//榨汁员工:接收者private Order order;public OrderCommand(Operator receiver,Order order) {this.receiver=receiver;this.order=order;}@Overridepublic void execute() {// TODO Auto-generated method stubSystem.out.println(order.getId()+"号顾客的成品");receiver.MarkFruit(order);}}
package command;
/*** 调度者(前台服务员)*/
import java.util.ArrayList;public class WaitorInvoker {private ArrayList<Command>commands=null;public WaitorInvoker() {commands=new ArrayList<Command>();}public void setCommand(Command cmd) {commands.add(cmd);}public void OrderUp() {System.out.println("新的订单!");for(Command cmd:commands) {//发送命令if(cmd!=null)cmd.execute();}}
}
package command;public class ClientClass {public static void main(String args[]) {//创建多个订单Order order1=new Order();order1.setId(1);order1.setFruitmap("橙子", 1);order1.setFruitmap("梨子", 2);order1.setFruitmap("苹果", 3);Order order2=new Order();order2.setId(2);order2.setFruitmap("香蕉", 1);order2.setFruitmap("葡萄", 2);order2.setFruitmap("西瓜", 3);//创建操作者Operator op=new Operator();//将多个订单封装成命令对象OrderCommand cmd1=new OrderCommand(op,order1);OrderCommand cmd2=new OrderCommand(op,order2);//创建调用者并发出命令WaitorInvoker waitor=new WaitorInvoker();waitor.setCommand(cmd1);waitor.setCommand(cmd2);//执行命令waitor.OrderUp();}
}

运行结果:

学习视频指路:黑手书生
=%E9%BB%91%E6%89%8B%E4%B9%A6%E7%94%9F&from_source=nav_search_new

更多推荐

设计模式之命令模式+实例

本文发布于:2024-02-27 16:56:20,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1707449.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:模式   实例   命令

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!