作为UI框架开发人员,提供自定义控件外观和行为的方法是我工作的一部分。 在许多情况下,这是通过允许框架用户在控件上注册工厂来完成的。 过去,我会为此创建一个工厂接口,并在框架内提供一个或多个默认实现。
这些事情在JavaFX中的处理方式有所不同,我已经开始为自己的工作而接受它了。 JavaFX使用一个称为javafx.util.Callback的通用接口,只要需要一段代码即可为给定参数(P)生成结果(R)的地方。
该界面如下所示:
public interface Callback<P,R> {
public R call(P param);
}
优点
起初,我不喜欢使用此接口,因为我的代码太冗长:我不再拥有不解释的接口名称。 但最后我意识到优势在于缺乏详细性。 优点是:
- 我们最终减少了编写代码。 没有专用接口,没有默认实现。
- 使用API的开发人员不必记住不同的工厂,而是可以专注于要创建的对象以及对他可用的参数。
- 回调接口是功能接口。 我们可以使用Lambda表达式,这使代码更加优雅,并且