我需要抽象以下结构,以避免实现在 x 中执行两次在 y 中的逻辑。下面是代码结构。
更具体一点:第一个代码部分由 JSF 框架使用。因此SpecificHandler的类也用@ViewScoped注解。 SpecificOnCreate 类是从 REST API 调用的,因此是无状态的。在 SpecificHandler 中执行的逻辑现在也应该在 SpecificOnCreate 中执行,因此必须进行抽象。有人对此有什么想法吗?
public interface Handler {
Container createComponents(ar1, arg2, arg3);
}
public class DefaultHandler implements Handler {
@Override
public Container createComponent(arg1, arg2, arg3) {
// logic here
}
}
@ViewScoped
public class SpecificHandler extends DefaultHandler {
@Override
public Container createComponent(arg1, arg2, arg3) {
// logic here
}
}
public interface OnCreate {
Dto onCreate(ar1);
}
public abstract class OnCreateBase implements OnCreate {
@Override
public Dto onCreate(arg1) {
// logic here
}
}
public class SpecificOnCreate extends OnCreateBase {
@Override
public Dto onCreate(arg1) {
// logic here
}
}
您可以将接口内部的逻辑实现为默认实现。因此,请避免重复。 请参阅 https://www.baeldung.com/java-static-default-methods#why-interfaces-need-default-methods 了解更多详细信息。