zoukankan      html  css  js  c++  java
  • 【设计模式】命令模式

    一、定义

      命令(Command)模式的定义如下:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。

    二、结构

    命令模式的结 

    命令模式包含以下主要角色。
    • 1)抽象命令类(Command)角色:声明执行命令的接口,拥有执行命令的抽象方法 execute()。

    • 2)具体命令类(Concrete Command)角色:是抽象命令类的具体实现类,它拥有接收者对象,并通过调用接收者的功能来完成命令要执行的操作。

    • 3)实现者/接收者(Receiver)角色:执行命令功能的相关操作,是具体命令对象业务的真正实现者。

    • 4)调用者/请求者(Invoker)角色:是请求的发送者,它通常拥有很多的命令对象,并通过访问命令对象来执行相关请求,它不直接访问接收者。 

    结构图

      

    三、命令模式在 Spring 框架 JdbcTemplate 应用的源码分析

      1) Spring 框架的 JdbcTemplate 就使用到了命令模式

      2) 代码分析

      

      3) 模式角色分析说明

      StatementCallback 接口,类似命令接口(Command)
      class QueryStatementCallback implements StatementCallback<T>, SqlProvider , 匿名内部类,实现了命令接口,同时也充当命令接收者
      命令调用者是 JdbcTemplate,其中 execute(StatementCallback<T> action) 方法中,调用 action.doInStatement 方法,不同的实现 StatementCallback 接口的对象,对应不同的 doInStatemnt 实现逻辑
      另外实现 StatementCallback 命令接口的子类还有 QueryStatementCallback


    参考:http://c.biancheng.net/view/1380.html

     
  • 相关阅读:
    实验3 简单的分支与循环结构 2.利用循环计算n个圆柱体体积。
    实验 3 简单的分支与循环结构 第一题 编写求圆面积的程序,要求当输入的半径r<=0时,提示输入错误,要求r为浮点型,r的数值是动态的由键盘输入
    心得3
    作业 3 应用分支与循环结构解决问题
    实验5 函数
    实验1 题目2
    第三,四章学习心得
    第2章学习心得
    第一章学习心得
    5-3
  • 原文地址:https://www.cnblogs.com/h--d/p/14685035.html
Copyright © 2011-2022 走看看