前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pipeline设计模式使用

pipeline设计模式使用

作者头像
路行的亚洲
发布2023-09-12 18:56:46
3510
发布2023-09-12 18:56:46
举报
文章被收录于专栏:后端技术学习后端技术学习

如果让你实现一个pipeline模式?如何实现,让代码看起来不那么臃肿。

首先需要考虑,它是一个链路的流程,同时具备一个固定的模式进行着。此时,我们就可以考虑使用pipeline模式。pipeline模式中的两大重要的操作:

组装和处理

也即:定义handler和pipeline,进行pipeline组装和handler处理

因为只要组装成pipeline后,才可以进行流水线的操作。

因此,我们可以基于pipeline的骨架,然后实现一个简单的案例,而这个案例可能就是你需要的有序操作。通常适应的场景,比如业务逻辑,需要按照顺序执行,不能并行的时候,就可以使用。

一、定义处理的handler接口

代码语言:javascript
复制
public interface Handler<I,O> {
    O proccess(I input);
}

二、定义pipeline,组装数据和执行数据处理

代码语言:javascript
复制
public class Pipeline<I,O> {

    // 定义handler
    private final Handler<I,O> currentHandler;

    public Pipeline(Handler<I, O> currentHandler) {
        this.currentHandler = currentHandler;
    }

    //添加处理数据的handler
    public <K> Pipeline<I,K> addHandler(Handler<O, K> newHandler) {
        return new Pipeline<>(input -> newHandler.proccess(currentHandler.proccess(input)));
    }

    //执行对应handler的处理
    public O execute(I input) {
        return  currentHandler.proccess(input);
    }

}

三、定义处理业务逻辑的handler,这里主要有两个

代码语言:javascript
复制
public class Test1Handler implements Handler<Integer,Integer> {

    @Override
    public Integer proccess(Integer input) {
        Integer num = input + 2;
        System.out.println("Test1Handler==="+num);
        return num;
    }
}
代码语言:javascript
复制
public class Test2Handler implements Handler<Integer,Integer> {

    @Override
    public Integer proccess(Integer input) {
        Integer num = input + 3;
        System.out.println("Test2Handler==="+num);
        return num;
    }
}

四、执行组装和具体业务结果返回

代码语言:javascript
复制
public class HandlerDemoTest {

   @Test
   public void testAddHandlersToPipeline() {
       Pipeline pipelineResult = new Pipeline<>(new Test1Handler()).addHandler(new Test2Handler());
       Integer number = 1;
       Integer nums = (Integer) pipelineResult.execute(number);
       System.out.println(nums);
   }
}

可以看到具体的骨架就只有两个类,然后组装是基于 Pipeline pipelineResult = new Pipeline<>(new Test1Handler()).addHandler(new Test2Handler());进行组装的,而处理的逻辑是基于 pipelineResult.execute(number)实现的。

看到这里是不是直接也想去试一下。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-09-07 21:05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 后端技术学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、定义处理的handler接口
  • 二、定义pipeline,组装数据和执行数据处理
  • 三、定义处理业务逻辑的handler,这里主要有两个
  • 四、执行组装和具体业务结果返回
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档