1. 前言
最近开始忙起来了,写东西的时间越来越少了。这几天开始在 Java 开发中尝试函数式编程风格。所以就写点小东西来分享一下。
2. 什么是函数式编程?
在我看来函数式编程就是把函数作为一等公民来使用。平常我们开发都是在处理数据。面向对象中都在处理类。而函数式编程不是在写函数就是在写函数的路上。我们来看看 Java 中函数式编程的演进之路。我小时候玩过一种廉价的黑白屏游戏机,只能玩俄罗斯方块。这种是不可扩展的。
public void playGame(){
// 只能玩俄罗斯方块
}复制代码
这种机器给童年带来了不少的乐趣。后来小伙伴有了一台gameboy,这种掌机的好处在于它可以插卡。一张卡一个游戏,最有名的莫过于 《超级马里奥》 和《打砖块》了。这时候机器是完全可扩展的了。
public void playGameboy(GameboyCard card){
card.getGame().run()
}
复制代码
虽然可以扩展但是卡的价格非常贵,当时买卡的渠道还很少。那时候其实就想如果能自己造 gameboy 游戏就好了(然后我就来搞编程?)。理想中的游戏机是我们不关心你什么风格的游戏,只要你能放入符合接口的游戏卡中并且在我这个游戏机中跑就行。
所以我们定义了一个固定的游戏卡接口:
/**
* @author Felordcn
* @since 2019/10/31 22:13
*/
@FunctionalInterface
public interface Card {
Game apply();
}复制代码