I would like to make more of an effort to use Java 8's functional features and shift my thinking towards that paradigm; however, I'm not quite sure how to reconcile class design.
For example I recently wrote something similar to this:
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;
}
}
then I proceed to use it like so...
public class Worker {
private final ExampleClass exampleClass;
public Worker(ExampleClass exampleClass) {
this.exampleClass = exampleClass;
}
public void start() {
final Boolean result = exampleClass.getWorkFunction().apply(exampleClass.getExampleData());
if (result) {
...
}
...
}
}
Would something like the above be preferred over what I would consider the more traditional approach?
public class ExampleClass {
private ExampleData exampleData;
public ExampleClass(ExampleData exampleData) {
this.exampleData = exampleData;
}
public Boolean work() {
return doSomething(exampleData);
}
}
and the implementing class...
public class Worker {
private final ExampleClass exampleClass;
public Worker(ExampleClass exampleClass) {
this.exampleClass = exampleClass;
}
public void start() {
if (exampleClass.work()) {
...
}
...
}
}
If I'm completely off base, what would be a proper functional solution using Java 8?
Aucun commentaire:
Enregistrer un commentaire