我想更加努力地使用 Java 8 的功能特性,并将我的思想转向那个范式;但是,我不太确定如何调和这种情况。
例如,我最近写了类似的东西:
public class ExampleClass {
private ExampleData exampleData;
private Function<ExampleData, Boolean> workFunction;
public ExampleData getExampeData() {
return exampleData;
}
public void setExampleData(ExampleData exampleData) {
this.exampleData = exampleData;
}
public Function<ExampleData, Boolean> getWorkFunction() {
return workFunction;
}
public void setWorkFunction(Function<ExampleData, Boolean> workFunction) {
this.workFunction = workFunction;
}
}
然后我继续像这样使用它......
public class Worker implements Callable {
private final ExampleClass exampleClass;
// ExampleClass serves as a container for the function and it's
// input data in order to minimize the number of arguments
// passed to this constructor. Otherwise would be
// public Worker(ExampleData exampleData, Function<T, R> workFunction, ...) {
// Note: using "..." here to represent more args.
public Worker(ExampleClass exampleClass, ...) {
this.exampleClass = exampleClass;
...
}
@Override
public void call() {
final Boolean isComplete = exampleClass.getWorkFunction().apply(exampleClass.getExampleData());
if (isComplete) {
...
}
...
}
}
与我认为更传统的方法相比,上述方法是否更受欢迎?
public class ExampleClass {
private ExampleData exampleData;
public ExampleClass(ExampleData exampleData) {
this.exampleData = exampleData;
}
public Boolean work() {
return isComplete(exampleData);
}
}
和实现类...
public class Worker implements Callable {
private ExampleClass exampleClass;
public Worker(ExampleClass exampleClass, ...) {
this.exampleClass = exampleClass;
...
}
如果我完全偏离了基础,那么使用 Java 8 的适当功能解决方案是什么?
更新:假设我的示例不返回布尔值。在使用 Java 8 进行函数式编程的上下文中,将函数作为类级别参数显式传递更好,还是仅使用传统的面向对象方式传递另一个执行该函数的类更好?
暮色呼如
三国纷争
相关分类