『编程』函数式编程很难懂?其实真心很简单


『编程』函数式编程很难懂?其实真心很简单
文章图片
『编程』函数式编程很难懂?其实真心很简单
文章图片
『编程』函数式编程很难懂?其实真心很简单
文章图片
今天是我自学Java的第35天 。
感谢你的观看 , 谢谢你 。
话不多说 , 开始今天的学习:
现在直播一直都很火 , 今天我们就用Java代码简单地模拟一个直播案例 , 以此来一步步说明什么叫函数式编程 。
不要看这个名字好像挺难懂的样子 , 其实很简单 。
一、直播间案例现在有一个直播平台 , 它如何管理那些想直播的人?很简单 , 制定规则就好了 , 在Java里面接口的作用就是制定规则 。
①有一个接口叫LiveRoom , 就是直播间 。
你想要直播?很简单 , 实现直播间接口就好了 , 实现了你就能开个直播间直播了 。
②LiveRoom接口里有一个抽象方法叫live()
表示的就是直播间直播的什么内容?
你播游戏也行 , 播唱歌也行 , 播吃饭 , 播睡觉都可以 , 所以我用一个抽象方法表示直播的内容 , 你具体播什么我不清楚 , 都可以 。
你实现我这个接口了 , 必须要重写live方法 。
简单地理解就是 , 你必须得告诉我你直播什么 , 我才能让你直播 , 不然你不能有直播间 。
规则制定完毕 , 好 , 现在有一个直播间 , 在玩游戏 , 一看直播间名字 , 哦 , 叫刘小爱 。
这个用Java代码如何表现出来?
1.最常规代码
①创建一个刘小爱类
实现LiveRoom接口 , 刘小爱既然能直播 , 肯定是实现了直播接口的 。
②重写接口里的live方法
刘小爱直播的是啥?哦 , 原来是魔兽rpg游戏 。
③创建刘小爱对象
将刘小爱对象作为参数传入method方法 。
④method方法
直播间会调用live方法 , 输出正在直播什么内容 。
所以运行代码 , 控制台就会输出:“玩魔兽rpg游戏” 。
现在问题来了 , 代码能不能简化?
可以的 , 使用匿名内部类就好了 。
2.匿名内部类
我既然是看直播 , 直播间名字叫啥重要么?
直播间叫刘小爱也好 , 叫刘大爱也罢 , 哪怕是叫刘老爱都无关紧要 , 我是要看直播的内容 , 那我完全可以不用创建刘小爱类 。
代码如下:
⑤匿名内部类
既然名字不重要 , 直播间没有名字了 , 那就直接用父接口LiveRoom的名字代替就好了 。
new LiveRoom(){ , 这表示的就是LiveRoom的子类(实现类)对象 , 也就相当于是常规方法中的刘小爱对象 。
匿名内部类省略了类名 , 不用创建一个实现类 , 所以更简单 。
那还能不能再简化?
可以的 , 也就是今天的重点 , 函数式编程 。
二、函数式编程函数 , 这个概念我们在数学里面我们就接触过 。
y=f(x)(y=x+1)这就是函数的格式 , 其中f是函数名 , x是变量 , y是函数值 , 还有定义域 , 值域什么的 。
你发现没有 , Java中的方法其实就是一个函数:
方法名不就是函数名么?参数也就是函数中的变量 , 返回值也就是函数值?它们本质上是一样的的 , 只不过叫法不一样 , 并且在有的编程语言中方法也就叫函数 。
前面无论是最常规代码还是匿名内部类 , 它们都有一个重点:LiveRoom接口中的live方法 , 也就是重写后的方法 。
函数式编程就是依据这个方法来的:
⑥Lambda表达式
lambda , 中文翻译过来就是拉姆达 , 还记得数学中:λ这个字符么?说的就是它 。