时间的法外狂徒

导航

函数式编程简单理解

越简单,越容易理解,这里只是做一个简单的入门讲解,抛砖引玉。

一、函数式编程的含义

个人理解:函数式编程,就是在定义好输入输出的基础上,将处理逻辑当成参数传递给方法。

在java8以前,实现函数式编程靠的的匿名内部类,java8添加了lambda表达式,极大的简化了代码。这里并不详述lambda表达式。

二、直接举例

1、首先定义一个接口——抽象方法才需要处理逻辑。

    
    interface OneInterface{
        int apple(int x,int y);
    }

在这个接口里,定义了一个方法,输入输出类型已经固定。在没有实现他之前,任何合理的处理逻辑都满足他。但是如果使用实现类的方式实现它,那么每种逻辑都需要一个方法。

2、使用匿名内部类——把处理逻辑实现

    @Test
    public void test01(){
        //添加处理逻辑
        OneInterface oneInter = new OneInterface() {
            @Override
            public int apple(int x, int y) {
                int z = x + y;
                return z;
            }
        };
        //调用实现
        int result = oneInter.apple(2,3);
        System.out.println(result);

    }

在新建对象时,把逻辑当成参数传递。

输出:

5

Process finished with exit code 0

 

3、使用lambda的写法

   @Test
    public void test02(){
        //添加处理逻辑
        OneInterface oneInter = (x,y) -> x*y;
        //调用实现
        int result = oneInter.apple(2,3);
        System.out.println(result);
    }

可以看到,lambda表达式极大地简化了代码。

输出:

6

Process finished with exit code 0

 

但是上述的两种方式,显然不是一个接口的规范用法,下面的重构一下代码。

4、添加一个调用方法——规范的使用接口

定义一个方法先:

   public  void oneMethod(OneInterface oneInterface){
        int result = oneInterface.apple(2,3);
        System.out.println(result);
    }

这个方法,调用了这个接口,并且并不知道到接口实现。

使用方法:

    @Test
    public void test03(){
        //匿名内部类方式
        oneMethod(new OneInterface() {
            @Override
            public int apple(int x, int y) {
                return x+y;
            }
        });
        //lambda表达式方式
        oneMethod((x,y) -> x*y);
    }

输出:

5
6

Process finished with exit code 0

以上就是函数式编程的一个很简单很简单的例子。

posted on 2020-05-18 01:34  抄手砚  阅读(501)  评论(0编辑  收藏  举报