if-else有大学问
if-else
switch
以上两种是在开发过程中比较常用的,适用于代码量小,逻辑简单。一旦代码长度偏长,逻辑复杂时,闭眼都能想象,满篇幅的if-else。一个是影响了可读性,另一个改起来也特别费劲,生怕动一某个变量影响整个代码块的逻辑。可维护性低。
策略模式


策略模式在这里简单理解就是把 if语句里面的逻辑或switch语句中case里面的逻辑抽取出来,把它放到一个策略类中。这样每个判断都改成了一个类,需要修改的时候只要改对应的类,不用担心影响到其它的类的实现逻辑,方便维护。对于简单的逻辑其实没必要搞得这么复杂,if-else几行代码就能解决。可以看出一旦策略类多了,也很麻烦。
函数式接口



函数式接口相对而言就比较折中,既不要担心if-else中,改动造成其它逻辑影响,代码也不集中在一起,也会想策略模式中存在很多类文件。比较麻烦的是用了lambda表达式,jdk版本会影响,团队中也可能有些小伙伴不会。
在实际使用的过程中在函数式方法中业务逻辑复杂时,也就是if语句块业务复杂。常常把这部分抽取除独立的业务Service。也常配合好策略类一起用。
总之,以上的每个方法行,都有一定的优缺点,if-else都能让人玩出花来,程序员要努力!