java代码复用实例 -- 将不同的方法写在参数中

文章描述了一个在多个页面调用相同C方法但前置逻辑不同的问题。作者提出了使用回调方法和定义一个EqualCallback接口来处理不同入参和出参的情况,通过工具类MethodHandler进行通用逻辑的封装,然后在具体实现类中调用这个工具类并传入回调方法,以此达到减少代码重复的目的。
摘要由CSDN通过智能技术生成

场景

工作中遇到一个场景,就是几乎系统的每一个页面都会去调用同一个C方法,但是调用C方法前的逻辑不一致。
如: function A(){
           B; //各个页面自己的逻辑,入参出参不同,
               //但是不同的入参有一个相同的属性,并且对相同属性的判断逻辑是相同的
           C; //通用方法
  }

这里本来想过用策略模式来减少代码复用,但是考虑实现类太多,所以决定另外实现。

代码

1、回调方法 
     
     //写一个接口,入参出参不同,即用泛型K V
     public interface EqualCallback<K,V>{
   
        //B方法的入参不同,出参也不同,所以K入参 V出参,供回调使用
        List<V> B(K req);
    }
2、工具类(减少代码复用,封装代码)
    
@Component
public class MethodHandler{
    
    public <K,V> void method(K req, EqualCallback<K,V> callback ){
  
       System.out.println("将通用的判断逻辑可以写在这里");
       
       //这里要回调不同的方法了  
       List<V> list = callback.B(req);
       
       C(); //这个是都要调用的工具类
   }
}
3、具体实现

public class ShapeTest{
    
   @Resource
   MethodHandler methodHandler;
    
   //Shape 入参实体BO  ;Square 出参实体BO
   public void test(Shape req)  {
     
       //调用
       methodHandler.method(req, (Square)-> differentWay(req) );

  }

   public void differentWay(Shape req){
       System.out.println("================ 各个实现类不一致的地方===============");
   }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值