摘要:什么是行为参数化帮助你应对频繁变更的需求。简言之,把一段准备好的逻辑代码放在那里不执行,但可以将这块代码作为参数传递给另外一个方法,稍后执行。上面的例子就是让方法接受了的不同行为,既是和
什么是行为参数化
帮助你应对频繁变更的需求。简言之,把一段准备好的逻辑代码放在那里不执行,但可以将这块代码作为参数传递给另外一个方法,稍后执行。
场景应用举例某农场仓库里有很多苹果,现在要对苹果的不同属性做筛选,比如重量、颜色等;
定义标准接口1.该接口是对苹果的各种属性的抽象
public interface ApplePredicate { boolean attribute(Apple apple); }
2.利用 ApplePredicate实现不同的筛选标准
public class AppleHeavyWeightPredicate implements ApplePredicate { @Override public boolean attribute(Apple apple) { return apple.getWeight() > 150; } }
public class AppleRedColorPredicate implements ApplePredicate { @Override public boolean attribute(Apple apple) { return "red".equals(apple.getColor()); } }
public class FilterApple { public static ListfilterApple(List appleList, ApplePredicate p) { List result = new ArrayList<>(); for (Apple apple : appleList) { if (p.attribute(apple)) { result.add(apple); } } return result; } }
通过代码可以看出行为参数可以理解为:让方法接受多种行为,并在该方法内部使用,来完成不同的行为。上面的例子就是让filterApple方法接受了ApplePredicate的不同行为,既是 AppleRedColorPredicate和AppleHeavyWeightPredicate;
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/71524.html
摘要:表达式允许你直接以内联的形式为函数式接口的抽象方法提供实现,并把整个表达式作为函数式接口的实例。如何使用接口,比如说如何挑选红色苹果为例说明苹果过滤实现测试测试使用表达式定义苹果过滤规则 什么是Lambda表达式 Lambda表达式可以理解为是一种匿名函数:它没有名称,但有参数列表、函数主体、返回类型,可能还有一个可以抛出的异常的列表。 Lambda表达式语法 (parameters)...
摘要:但是到了第二天,他突然告诉你其实我还想找出所有重量超过克的苹果。现在,农民要求需要筛选红苹果。那么,我们就可以根据条件创建一个类并且实现通过谓词筛选红苹果并且是重苹果酷,现在方法的行为已经取决于通过对象来实现了。 通过行为参数化传递代码 行为参数化 在《Java8实战》第二章主要介绍的是通过行为参数化传递代码,那么就来了解一下什么是行为参数化吧。 在软件工程中,一个从所周知的问题就是,...
摘要:面试通关要点汇总集部分解答说明如果你有幸能看到的话,本文整体框架来自阿里梁桂钊的博文,总结的非常不错。这样做的目的是对内部数据进行了不同级别的保护,防止错误的使用了对象的私有部分。被继承的类称为基类和父类或超类。 showImg(https://segmentfault.com/img/remote/1460000013442471?w=1280&h=819); Java面试通关要点汇...
摘要:时间永远都过得那么快,一晃从年注册,到现在已经过去了年那些被我藏在收藏夹吃灰的文章,已经太多了,是时候把他们整理一下了。那是因为收藏夹太乱,橡皮擦给设置私密了,不收拾不好看呀。 ...
阅读 3968·2023-04-26 01:48
阅读 3226·2021-10-13 09:40
阅读 1716·2021-09-26 09:55
阅读 3565·2021-08-12 13:23
阅读 1709·2021-07-25 21:37
阅读 3378·2019-08-30 15:53
阅读 1329·2019-08-29 14:16
阅读 1346·2019-08-29 12:59