博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
精通Java设计模式从初见到相爱之命令设计模式(15)
阅读量:5924 次
发布时间:2019-06-19

本文共 1626 字,大约阅读时间需要 5 分钟。

  hot3.png

1、概念

    请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。

2、场景

    2.1 :工作流Activit框架中就用到了这种模式,它总共7个接口,每个接口都有特定的命令去执行数据库中的表,因为activit框架会自动生成23张表,所以这些命令都会在这些表中直接增删改查,我们在后台直接调用这些命令就好。

 

3、简单代码实现

    

public interface Order {    void execute();}
public class Apple {    private String name = "ABC";    private int quantity = 10;    public void buy(){        System.out.println("买家name="+name+" quantity="+quantity);    }    public void sell(){        System.out.println("卖家name="+name+" quantity="+quantity);    }}
public class BuyApple implements Order {    private Apple apple;    public BuyApple(Apple apple) {        this.apple = apple;    }    @Override    public void execute() {        apple.buy();    }}
public class SellApple implements Order {    private Apple apple;    public SellApple(Apple apple){        this.apple = apple;    }    @Override    public void execute() {        apple.sell();    }}
public class Command {    private List
orderList = new ArrayList<>(); public void takeOrder(Order order){ orderList.add(order); } public void placeOrders(){ for (Order order : orderList) { order.execute(); } orderList.clear(); }}

main函数执行结果

public class Main {    public static void main(String[] args) {        Apple apple = new Apple();        BuyApple buyStockOrder = new BuyApple(apple);        SellApple sellStockOrder = new SellApple(apple);        Command command = new Command();        command.takeOrder(buyStockOrder);        command.takeOrder(sellStockOrder);        command.placeOrders();    }}

181713_tWPQ_3209213.png

    

转载于:https://my.oschina.net/mdxlcj/blog/1801137

你可能感兴趣的文章
ubuntu 升级后没有载入vboxdrv 模块
查看>>
Angular企业级开发(5)-项目框架搭建
查看>>
.Net Micro Framework开发板用户简明手册
查看>>
一步一步SharePoint 2007之四十五:实现自定义Workflow(4)——运行Workflow
查看>>
DataGrid Web Control 连载之六
查看>>
敏捷个人手机应用:如何使用时中法习惯
查看>>
python写的简单发送邮件的脚
查看>>
Spring MVC应用web.xml两种配置
查看>>
linux shell 菜单
查看>>
一步一步SharePoint 2007之三十六:在SharePoint中实现Workflow(2)——创建一个Workflow...
查看>>
Redhat的Linux产品版本AS/ES/WS的联系与区别
查看>>
Windows Vista重要资源库 - Springboard 系列资源
查看>>
ASP.NET企业开发框架IsLine FrameWork系列之六--DataProvider 数据访问(下)
查看>>
Spring3 整合Hibernate3.5 动态切换SessionFactory (切换数据库方言)
查看>>
MySQL累积求和
查看>>
嵌入式Linux中摄像头使用简要整理【转】
查看>>
iOS:项目中用到的Cookie
查看>>
shell 删除空文件夹
查看>>
【原】iOSCoreAnimation动画系列教程(一):CABasicAnimation【包会】
查看>>
系统架构师-基础到企业应用架构-单机软件架构
查看>>