命令模式 | Command Pattern
来源:互联网 发布:特价专场淘宝优站 编辑:程序博客网 时间:2024/06/16 21:35
命令模式是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。
模式结构:
Command:定义命令的接口,声明执行的方法。
ConcreteCommand:命令接口实现对象,是“虚”的实现;通常会持有接收者,并调用接收者的功能来完成命令要执行的操作。
Receiver:接收者,真正执行命令的对象。任何类都可能成为一个接收者,只要它能够实现命令要求实现的相应功能。
Invoker:要求命令对象执行请求,通常会持有命令对象,可以持有很多的命令对象。这个是客户端真正触发命令并要求命令执行相应操作的地方,也就是说相当于使用命令对象的入口。
Client:创建具体的命令对象,并且设置命令对象的接收者。注意这个不是我们常规意义上的客户端,而是在组装命令对象和接收者,或许,把这个Client称为装配者会更好理解,因为真正使用命令的客户端是从Invoker来触发执行。
创建一个命令接口:
public interface Order { void execute();}
创建一个请求类:
public class Stock { private String name = "ABC"; private int quantity = 10; public void buy(){ System.out.println("Stock [ Name: "+name+", Quantity: " + quantity +" ] bought"); } public void sell(){ System.out.println("Stock [ Name: "+name+", Quantity: " + quantity +" ] sold"); }}
创建实现了命令接口的实体类:
public class BuyStock implements Order { private Stock abcStock; public BuyStock(Stock abcStock){ this.abcStock = abcStock; } public void execute() { abcStock.buy(); }}
public class SellStock implements Order { private Stock abcStock; public SellStock(Stock abcStock){ this.abcStock = abcStock; } public void execute() { abcStock.sell(); }}
创建命令调用类:
import java.util.ArrayList;import java.util.List; public class Broker { private List<Order> orderList = new ArrayList<Order>(); public void takeOrder(Order order){ orderList.add(order); } public void placeOrders(){ for (Order order : orderList) { order.execute(); } orderList.clear(); }}
使用命令调用类来接收并执行命令:
public class CommandPatternDemo { public static void main(String[] args) { Stock abcStock = new Stock(); BuyStock buyStockOrder = new BuyStock(abcStock); SellStock sellStockOrder = new SellStock(abcStock); Broker broker = new Broker(); broker.takeOrder(buyStockOrder); broker.takeOrder(sellStockOrder); broker.placeOrders(); }}
输出结果:
Stock [ Name: ABC, Quantity: 10 ] boughtStock [ Name: ABC, Quantity: 10 ] sold
阅读全文
0 0
- 命令模式(Command Pattern)
- 命令模式(Command Pattern)
- Command Pattern(命令模式)
- 命令模式 Command Pattern
- 命令模式【Command Pattern】
- 命令模式(Command Pattern)
- 命令模式(Command Pattern)
- command pattern 命令模式
- 命令模式(Command Pattern)
- Command Pattern 命令模式
- 命令模式(Command Pattern)
- Command Pattern 命令模式
- 命令模式【Command Pattern】
- 命令模式 Command Pattern
- 命令模式【Command Pattern】
- 命令模式 | Command Pattern
- 命令模式 The Command Pattern
- 命令模式(Command Pattern)
- xtrabackup 2.4.6 的源码安装
- Nvidia GPU卡演进架构及(P100)介绍
- Activity.this和this的区别联系
- Eclipse官方下载最新版
- 桥数据包转发(八)
- 命令模式 | Command Pattern
- 水果的top k问题
- 常用HTML标签学习笔记2
- Regular Expression Matching
- 前端试题大综合练习(九)
- Kanade's sum
- Ax=b
- 用面向过程写简单推箱子逻辑
- GPU性能评测指标