我从JSF / @ Named bean中提取了以下代码,我希望以某种方式对其进行优化。
public List<MyObject> findObjectsByLanguage(String language) {
return postProcess(webFacade.findObjectsByLanguage(language));
}
public List<MyObject> findRandomObjects(String language) {
return postProcess(webFacade.findRandomObjectsByLanguage(language));
}
// many other similar methods that invoke postProcess
// ......
// ....
private List<MyObject> postProcess(List<MyObject> myObjects) {
myObjects().forEach(
(MyObject o) -> {
// process and modify object
}
);
return myObjects;
}
webFacade
是一个EJB,在传递到.xhtml页面之前,需要对接收到的实体进行一些后期处理。
这段代码可以完美地工作,但是我正在考虑JDK 8中是否有一些特殊功能或模式可以帮助重写代码并删除postProcess()
。另外,我已经用JSF标记了这个问题,尽管严格来说这不是jsf问题,但也许CDI或JSF可以做到。
这里的主要问题是我无法修改EJB,因此开发人员应该记住用postProcess
包装方法调用,这不是最好的方法。
我正在考虑类似于Servlet过滤器之类的东西。