java函数式编程

引言:因java8引入lambda表达式。由此开启了函数式编程的元年

何为函数式编程

网上各有看法,有人说:函数式编程关心数据的映射,命令式编程关心解决问题的步骤。
也有人说:函数式编程是声明式的,它应该指定“什么要做”而非“怎么做”。在此之前java
的面向对象编程便也属于命令式编程。通过以下案例,深入理解函数式编程。

案例

public abstract class Drink {

    abstract void  configure();

    public void drink(){
        System.out.println("拿出杯子");
        configure();
        System.out.println("倒入开水");
    }
}
Drink类是一个抽象类,有一个抽象方法configure,你可以配置任何你想喝的东西
public class DrinkTea extends Drink {

    @Override
    public void configure() {
        System.out.println("放入茶叶");
    }
}

public class DrinkCofe extends Drink {

    @Override
    public void configure() {
        System.out.println("手磨咖啡豆");
        System.out.println("咖啡倒入杯中");
    }
}
DrinkTea配置了一杯茶,DrinkCofe配置了一杯咖啡
public class Test {
    public static void main(String[] args) {
        Drink drinkTea = new DrinkTea();
        drinkTea.drink();

        Drink drinkCofe = new DrinkCofe();
        drinkCofe.drink();
    }
}

// 输出结果如下
拿出杯子
放入茶叶
倒入开水
--------------------
拿出杯子
手磨咖啡豆
咖啡倒入杯中
倒入开水
这是设计模式中的装饰器模式。接下来用函数式编程实现一次
public abstract class Drink {

    protected Consumer consumer;

    public void drink() {
        System.out.println("拿出杯子");
        consumer.accept("");
        System.out.println("倒入开水");
    }
}

public class DrinkTea extends Drink {

    public DrinkTea() {
        this.consumer = o -> System.out.println("放入茶叶");
    }
}


public class DrinkCofe extends Drink {

    public DrinkCofe() {
        this.consumer = o -> {
            System.out.println("手磨咖啡豆");
            System.out.println("咖啡倒入杯中");
        };
    }
}
输出的结果与上面一致,到这你可能会有疑问,我只不过是把configure()方法给替换了。 是的,这个案例我只为演示函数式编程的编写方式,从中去了解我们为什么要用函数式编程,什么时候需要函数式编程。从上面的代码我们能更清晰的找到函数入口,以及函数体,能很快定位问题。

总结

函数式编程让编程跟简洁,逻辑更通俗易懂。当然函数式编程本身有很多难以理解的理论,因为函数本身便能引出一堆理论。后面会写关于函数的认识,以及java中常用的函数接口,以及如何自定义函数接口。

欢迎扫描下面图片关注我的个人公众号,回复“资源”可以获取java核心知识整理和经典书籍

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值