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

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

    就算这个世道烂成一堆粪坑,那也不是你吃屎的理由
  • 相关阅读:
    Android开源项目发现---ImageView 篇(持续更新)
    Android开源项目发现---GridView 篇(持续更新)
    python的setup.py文件
    版本控制系统git
    python如何调用c编译好可执行程序
    Python特殊语法:filter、map、reduce、lambda [转]
    Apache+Mysql+PHP 套件
    django开发环境搭建(参考流程)
    C++ GUI Qt4编程-创建自定义窗口部件
    Qt学习笔记-Widget布局管理
  • 原文地址:https://www.cnblogs.com/whalesea/p/12908014.html
Copyright © 2011-2022 走看看