zoukankan      html  css  js  c++  java
  • 函数式编程简单理解

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

    一、函数式编程的含义

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

    在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

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

    就算这个世道烂成一堆粪坑,那也不是你吃屎的理由
  • 相关阅读:
    poi 导出Excel
    数据库连接太慢问题(3层for)
    mybatis 结果 返回的类中有集合的字段List<String>
    tomcat8 插件
    tomcat 7 到tomcat8 乱码问题
    简易代码生成器
    shiro权限控制用户登录的用法介绍
    导入maven工程并配置maven环境
    angularjs工程流程走不通的原因以及使用angularjs流程注意点
    访问路径:https://i.cnblogs.com/posts?categoryid=925678
  • 原文地址:https://www.cnblogs.com/whalesea/p/12908014.html
Copyright © 2011-2022 走看看