1. 简介
java8开始引入函数式编程,本文分析的就是该模块很常用的Supplier,顾名思义,该接口为声明一个供应商,用来获取指定泛型的实例,类似于工厂,执行该接口的获取实例方法(get)不支持接收参数。
2. 方法说明
2.1. get
该方法是接口的核心方法,供应商通过该接口返回实例。该方法类似于工厂模型的创建实例的方法,调用方不需要知道工厂怎么定义,通过什么方法来获取实例。只需要调用该方法,就可以获取到供应商提供的实例;但是没法指定参数。示例如下:
Supplier<String> ss = () -> "abc";
String str = ss.get();
Supplier<Map<String, String>> sh = () -> new HashMap<>();
Map<String, String> map = sh.get();
该方法没有对每次调用的返回结果有限制,不需要每次返回的都是相同的实例。
3. 应用场景
3.1. 延迟获取实例
该类提供了获取实例的方法,当某个业务需要指定的实例,但是并非需要实时的创建实例,就可以提供个该实例的Supplier,在需要的时候通过get来获取。
3.2. 无参的工厂方法
工厂模式的另一种实现方式,简化工厂方法的封装(使用Lambda表达式: () -> expression; )。对于调用方,使用该工厂更加简洁方便,统一规范。
###更多笔记请关注公众号,不定期更新###