资讯专栏INFORMATION COLUMN

【Java 8实战】第1篇:行为参数化

Sleepy / 3399人阅读

摘要:什么是行为参数化帮助你应对频繁变更的需求。简言之,把一段准备好的逻辑代码放在那里不执行,但可以将这块代码作为参数传递给另外一个方法,稍后执行。上面的例子就是让方法接受了的不同行为,既是和

什么是行为参数化

帮助你应对频繁变更的需求。简言之,把一段准备好的逻辑代码放在那里不执行,但可以将这块代码作为参数传递给另外一个方法,稍后执行。

场景应用举例

某农场仓库里有很多苹果,现在要对苹果的不同属性做筛选,比如重量、颜色等;

定义标准接口

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 List filterApple(List appleList,
                                          ApplePredicate p) {
        List result = new ArrayList<>();

        for (Apple apple : appleList) {
            if (p.attribute(apple)) {
                result.add(apple);
            }
        }
        return result;
    }

}
总结一下行为参数化

通过代码可以看出行为参数可以理解为:让方法接受多种行为,并在该方法内部使用,来完成不同的行为。上面的例子就是让filterApple方法接受了ApplePredicate的不同行为,既是 AppleRedColorPredicateAppleHeavyWeightPredicate;

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/71524.html

相关文章

  • Java 8实战2:Lambda表达式

    摘要:表达式允许你直接以内联的形式为函数式接口的抽象方法提供实现,并把整个表达式作为函数式接口的实例。如何使用接口,比如说如何挑选红色苹果为例说明苹果过滤实现测试测试使用表达式定义苹果过滤规则 什么是Lambda表达式 Lambda表达式可以理解为是一种匿名函数:它没有名称,但有参数列表、函数主体、返回类型,可能还有一个可以抛出的异常的列表。 Lambda表达式语法 (parameters)...

    figofuture 评论0 收藏0
  • Java8实战》-读书笔记二章

    摘要:但是到了第二天,他突然告诉你其实我还想找出所有重量超过克的苹果。现在,农民要求需要筛选红苹果。那么,我们就可以根据条件创建一个类并且实现通过谓词筛选红苹果并且是重苹果酷,现在方法的行为已经取决于通过对象来实现了。 通过行为参数化传递代码 行为参数化 在《Java8实战》第二章主要介绍的是通过行为参数化传递代码,那么就来了解一下什么是行为参数化吧。 在软件工程中,一个从所周知的问题就是,...

    Astrian 评论0 收藏0
  • Java面试通关要点汇总集(基础之基本功,非原作者)

    摘要:面试通关要点汇总集部分解答说明如果你有幸能看到的话,本文整体框架来自阿里梁桂钊的博文,总结的非常不错。这样做的目的是对内部数据进行了不同级别的保护,防止错误的使用了对象的私有部分。被继承的类称为基类和父类或超类。 showImg(https://segmentfault.com/img/remote/1460000013442471?w=1280&h=819); Java面试通关要点汇...

    smallStone 评论0 收藏0
  • 首次公开,整理12年积累的博客收藏夹,零距离展示《收藏夹吃灰》系列博客

    摘要:时间永远都过得那么快,一晃从年注册,到现在已经过去了年那些被我藏在收藏夹吃灰的文章,已经太多了,是时候把他们整理一下了。那是因为收藏夹太乱,橡皮擦给设置私密了,不收拾不好看呀。 ...

    Harriet666 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<