最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談JAVA工作流的優(yōu)雅實(shí)現(xiàn)方式

 更新時(shí)間:2018年11月27日 14:47:10   作者:一代天驕  
這篇文章主要介紹了淺談JAVA工作流的優(yōu)雅實(shí)現(xiàn)方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

今天查找線上問(wèn)題,看到一個(gè)讓我腦洞大開的工作流實(shí)現(xiàn)方式。以前用過(guò)責(zé)任鏈模式,也用過(guò)模板模式實(shí)現(xiàn)類工作流的方式,但是對(duì)比這個(gè)工具,遜色不少,不賣關(guān)子了,就是Apache Commons Chain,它是Command模式與責(zé)任鏈模式的綜合體。

1、Apache Commons Chain 中的角色有:chain、context、command。

2、在我們訂單系統(tǒng)有這樣的業(yè)務(wù),就是退票的時(shí)候,會(huì)根據(jù)核損后的訂單價(jià)格,給客人退錢,但是訂單的金額,由幾部分組成

有現(xiàn)金、商旅卡、有優(yōu)惠券。所以根據(jù)需求,我們需要一個(gè)工作流來(lái)走下退款流程,我們的流程流轉(zhuǎn)的步驟是這樣的:

先退商旅卡-----如果還有余額退現(xiàn)金-----------還有余額再退優(yōu)惠券,分析一下這樣的需求,剛好可以用這個(gè)工具,直接上代碼了

先引入包

 <dependency>
      <groupId>commons-chain</groupId>
      <artifactId>commons-chain</artifactId>
      <version>1.2</version>
    </dependency>

編寫command

/**
 * 退商旅卡Cash
 * Created by 一代天驕 on 2018/7/1.
 */
@Slf4j
public class RefundBusinessCardCommand implements Command{
  public boolean execute(Context context) throws Exception {
    RefundContext refundContext = (RefundContext) context;
    log.info("orderId:{} 退款開始,第一步:退商旅卡,金額:{}",refundContext.getOrderId(),"10");
    return false;
  }
}

/**
 * 退現(xiàn)金
 * Created by 一代天驕 on 2018/7/1.
 */
@Slf4j
public class RefundCashCommand implements Command {
 
  public boolean execute(Context context) throws Exception {
    RefundContext refundContext = (RefundContext) context;
    log.info("orderId:{}退款開始,第二步:退現(xiàn)金,金額:{}",refundContext.getOrderId(),"5");
    return false;
  }
}

/**
 * 退優(yōu)惠券
 * Created by 一代天驕 on 2018/7/1.
 */
@Slf4j
public class RefundPromotionCommand implements Command{
 
 
  public boolean execute(Context context) throws Exception {
    RefundContext refundContext = (RefundContext) context;
    log.info("orderId:{} 退款開始,第二步:退優(yōu)惠券,金額:{}",refundContext.getOrderId(),"20");
    return false;
  }
}
/**
 * Created by 一代天驕 on 2018/7/1.
 */
@Data
public class RefundContext extends ContextBase {
 
  /**
   * 訂單號(hào)
   */
  private Integer orderId;
 
 
}
/**
 *
 * 退票的工作流實(shí)現(xiàn)
 * Created by 一代天驕 on 2018/7/1.
 */
public class RefundTicketChain extends ChainBase {
 
  public void init() {
    //退商旅卡
    this.addCommand(new RefundBusinessCardCommand());
    //退現(xiàn)金
    this.addCommand(new RefundCashCommand());
    //退優(yōu)惠券
    this.addCommand(new RefundPromotionCommand());
  }
 
 
  public static void main(String[] args) throws Exception {
    RefundTicketChain refundTicketChain = new RefundTicketChain();
    refundTicketChain.init();
    RefundContext context = new RefundContext();
    context.setOrderId(1621940242);
    refundTicketChain.execute(context);
  }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • java異步上傳圖片示例

    java異步上傳圖片示例

    這篇文章主要介紹了java異步上傳圖片示例,需要的朋友可以參考下
    2014-02-02
  • java中pdf轉(zhuǎn)圖片的實(shí)現(xiàn)方法

    java中pdf轉(zhuǎn)圖片的實(shí)現(xiàn)方法

    下面小編就為大家?guī)?lái)一篇java中pdf轉(zhuǎn)圖片的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-12-12
  • Java設(shè)計(jì)模式之原型設(shè)計(jì)示例詳解

    Java設(shè)計(jì)模式之原型設(shè)計(jì)示例詳解

    這篇文章主要為大家詳細(xì)介紹了Java的原型設(shè)計(jì)模式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • java利用遞歸實(shí)現(xiàn)類別樹示例代碼

    java利用遞歸實(shí)現(xiàn)類別樹示例代碼

    這篇文章主要給大家介紹了關(guān)于java利用遞歸實(shí)現(xiàn)類別樹的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • springboot連接sqllite遇到的坑及解決

    springboot連接sqllite遇到的坑及解決

    這篇文章主要介紹了springboot連接sqllite遇到的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • springboot實(shí)現(xiàn)rabbitmq的隊(duì)列初始化和綁定

    springboot實(shí)現(xiàn)rabbitmq的隊(duì)列初始化和綁定

    這篇文章主要介紹了springboot實(shí)現(xiàn)rabbitmq的隊(duì)列初始化和綁定,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10
  • 基于Java開發(fā)實(shí)現(xiàn)ATM系統(tǒng)

    基于Java開發(fā)實(shí)現(xiàn)ATM系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了基于Java開發(fā)實(shí)現(xiàn)ATM系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • JAVA中的Launcher類解析

    JAVA中的Launcher類解析

    這篇文章主要介紹了JAVA中的Launcher類解析,Launcher作為JAVA應(yīng)用的入口,根據(jù)雙親委派模型,Laucher是由JVM創(chuàng)建的,它類加載器應(yīng)該是BootStrapClassLoader, 這是一個(gè)C++編寫的類加載器,是java應(yīng)用體系中最頂層的類加載器,需要的朋友可以參考下
    2023-09-09
  • 淺談Java序列化和hessian序列化的差異

    淺談Java序列化和hessian序列化的差異

    這篇文章主要通過(guò)對(duì)二者簡(jiǎn)單的實(shí)現(xiàn)方式的對(duì)比,介紹了Java序列化和hessian序列化的差異,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-09-09
  • springboot多文件上傳代碼實(shí)例及解析

    springboot多文件上傳代碼實(shí)例及解析

    這篇文章主要介紹了springboot多文件上傳代碼實(shí)例及解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12

最新評(píng)論

沙坪坝区| 梁平县| 鹤岗市| 奎屯市| 利辛县| 玛纳斯县| 安多县| 常熟市| 普定县| 泊头市| 黎平县| 临泽县| 望奎县| 泰顺县| 方城县| 旅游| 任丘市| 乌拉特后旗| 黑山县| 饶河县| 陇川县| 黄大仙区| 卢龙县| 江川县| 阿城市| 建宁县| 安西县| 大理市| 龙州县| 四平市| 土默特左旗| 吴江市| 凤凰县| 齐齐哈尔市| 临城县| 白河县| 武汉市| 安新县| 繁峙县| 福清市| 石家庄市|