java8 linq_Java8-lambda表达式

拥抱函数式编程

每有新技术出现(虽然Java8已经远远谈不上新了),伴随而来的总是新造的一堆词,但是新词往往可以恰当的表达新技术的特性,所以我们从学习概念,再研究lambda。

概念

命令式编程、声明式编程、函数式编程

一.命令式编程的主要思想是关注计算机具体执行的步骤,即一步一步告诉计算机先做什么再做什么。例如Java等高级语言。

二.声明式编程是以数据结构的形式来表达程序执行的逻辑。它的主要思想是告诉计算机应该做什么,但不指定具体要怎么做。典型例子是sql,html。与命令式编程之间的差别是:

不需要创建变量来存储数据

不包含流程控制语句,像while等

三.函数式编程和声明式编程是有所关联的,因为他们思想是一致的:即只关注做什么而不是怎么做。但函数式编程不仅仅局限于声明式编程。

函数式编程最重要的特点是“函数第一位”,即函数可以出现在任何地方,比如你可以把函数作为参数传递给另一个函数,不仅如此你还可以将函数作为返回值。这种传递函数的操作也称为行为参数化。大部分常见的编程语言一半都已经提供了对这种编程方式的支持,比如 JavaScript,再有 C# 中的 LINQ 和 Java 中的 Lambda 和闭包的概念。

回调方法

在将来某个条件达成的情况下 会自动触发的方法,叫做回调方法.

比如java8提供了很多函数式接口,其中的方法实现就是回调方法.

行为参数化

行为一般存在于方法中,行为参数化的意思类似于模仿方法模式或策略模式,将主要的,频繁改变的行为封装成参数,传入母方法内.行为参数化对于应对不断变化的需求是一种很好的解决方案.

定义:让方法接受多种行为作为参数,并在内部使用,来完成不同的行为

Why Lambda?

有了行为参数化这种思想,我们将不同的实现放在不同的实现类中,将他们的共同接口传递给母方法.调用母方法时,实例化相应的实现类就可以实现灵活的策略模式.但是这种方式有一个弊端:实例化了很多只使用一次的对象

通过匿名类可以解决这个问题,但是创建匿名类的代码啰嗦,有很多模板代码,我们想要的抽象方法的实现只占代码的一小部分.

用lambda表达式优化匿名类,抽取出方法实现.代码变得前所未有的简约优雅。简约,却不简单。

lambda并没有改变任何东西,但是他又改变了所有东西.理论上来说,在java8之前做不到的事,lambda也做不到;但是能做到的事,lambda能做的更好.

反向思考,要理解不熟悉的lambda表达式的作用,要追根溯源去看他实现的接口被用在哪个方法中,方法的作用,所以lambda的可读性

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值