设计模式学习—命令模式
来源:互联网 发布:java 抽象方法 static 编辑:程序博客网 时间:2024/05/17 19:19
一、我的理解
命令模式是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。(以上是菜鸟教程中对其的定义,目前我暂时还没有多深的体会)
二、实现方式
通过调用者调用接受者执行命令,顺序:调用者→接受者→命令。
定义三个角色:1、received 真正的命令执行对象 2、Command 3、invoker 使用命令对象的入口
三、实例
Java代码
Order接口: 命令接口,所有要执行的命令都需要实现这一接口
package com.study.dp.command;/** * 命令接口 * @author bird * */public interface Order {void execute();}Stock类:请求类
package com.study.dp.command;/** * 请求类 * @author bird * */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");}}BuyStock类:购买命令的实际执行类
package com.study.dp.command;/** * 实现order接口的实体类 * @author bird * */public class BuyStock implements Order {private Stock abcStock;public BuyStock(Stock abcStock) {this.abcStock = abcStock;}@Overridepublic void execute() {abcStock.buy();}}SellStock类:销售命令的实际执行类
package com.study.dp.command;/** * 实现order接口的实体类 * @author bird * */public class SellStock implements Order {private Stock abcStock;public SellStock(Stock abcStock) {this.abcStock = abcStock;}@Overridepublic void execute() {abcStock.sell();}}Broker类:调用对象,基于哪个请求则执行对应的类
package com.study.dp.command;import java.util.ArrayList;import java.util.List;/** * 命令调用类 * @author bird * */public class Broker {private List<Order> orderList = new ArrayList<>();public void takeOrder(Order order) {orderList.add(order);}public void placeOrders() {for(Order order:orderList) {order.execute();}orderList.clear();}}Demo类:测试
package com.study.dp.command;/** * 测试类,使用Broker类来接受并执行命令 * @author bird * */public class Demo {public static void main(String[] args) {Stock abcStock = new Stock();BuyStock buyStock = new BuyStock(abcStock);SellStock sellStock = new SellStock(abcStock);Broker broker = new Broker();broker.takeOrder(buyStock);broker.takeOrder(sellStock);broker.placeOrders();}}
四、应用实例
1.GUI中的每一个按钮都是一个命令模式
阅读全文
0 0
- 设计模式学习笔记—命令模式
- 设计模式学习—命令模式
- 设计模式学习--命令模式
- 设计模式学习-----命令模式
- 设计模式学习--命令模式
- 设计模式学习--命令模式
- 学习设计模式-命令模式
- 设计模式学习:命令模式
- 设计模式—命令模式
- 设计模式—命令模式
- 设计模式—命令模式
- 设计模式—命令模式
- 设计模式学习笔记——命令模式
- JAVA设计模式学习——命令模式
- 学习设计模式之禅——命令模式
- 设计模式学习笔记——命令模式
- 设计模式学习(六)——命令模式
- 《Head First 设计模式》学习笔记——命令模式
- 04. Servlet 异常处理&日志调试
- SRS(simple-rtmp-server)流媒体服务器源码分析--HLS切片
- PTA甲 1104. Sum of Number Segments (20)
- JAVASCRIPT的第二天
- 丑数
- 设计模式学习—命令模式
- 大数据入门基础:Hadoop简介
- 网易2016研发工程师编程题--完全解析
- 从概念到底层技术,一文看懂区块链架构设计(附知识图谱)
- #425
- HDU-2017 多校训练赛1-1002-Balala Power!
- Linux服务器上监控网络带宽的18个常用命令
- js全国城市三级联动
- nyoj括号配对问题