函数式接口之方法作为参数

本文共 1,283 字,预计阅读时间 4 分钟

在现实开发中,肯定会遇到这样一种情况,有几个业务场景,里面的大部分业务逻辑都一样,只有某些逻辑不同,而这些不同的逻辑又依赖于前面的逻辑,你会选择写重复代码去实现还是选择抽取公共方法,对那些不同的逻辑做单独处理?是不是理解起来比较抽象,简单就一句话,怎么把方法作为参数调用另一个方法,那就需要使用函数式接口了,最合适的莫过于@FunctionalInterface注解 。

首先定义一个函数式接口,加上注解,定义一个方法和需要的参数

复制代码
package com.zxh;

@FunctionalInterface
public interface MyFunction {
    void execute(int a, int b, String message);
}
复制代码

然后定义公共的方法,用于接收方法参数,来处理不同的逻辑

复制代码
    public static void dealwithData(Integer a, Integer b, String s, MyFunction method) {
        Integer pageCount = 3;
        for (int i = 1; i <= pageCount; i++) {
            method.execute(a, b, s);
        }
    }
复制代码

例如上述,定义了一个方法,模拟分页去执行传入的方法的业务逻辑

在需要调用的地方传参进行自定义的逻辑

复制代码
    public static void add(Integer a, Integer b, String s){
        System.out.println(a + b + "-" + s);
    }

    public static void del(Integer a, Integer b, String s){
        System.out.println(a  + "-" + b + "-" + s);
    }

    public static void main(String[] args) {
        //加法的场景
        dealwithData(1, 2, "hello", (a, b, s) -> {
            add(a, b, s);
        });
        //拼接的场景
        dealwithData(1, 2, "hello", (a, b, s) -> {
            del(a, b, s);
        });
    }
复制代码

上述定义了两个方法(方法内的业务逻辑不同),然后在main方法的不同场景中调用不同的方法

那么就可以很好的实现方法的封装,减少代码的冗余。

必须要有公共方法封装的思想,提高代码的健壮性

 

posted @   钟小嘿  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
历史上的今天:
2021-12-19 InputStream类available和read方法读取流数据不全?
点击右上角即可分享
微信分享提示