Предоставить две формы для ModelDriven

У меня есть этот код для реализации модели управляемого механизма.

public class Input_newAction extends CommonAction implements ModelDriven<InputForm> {

    private InputForm form = new InputForm();
    @Override
    public InputForm getModel() {
        return form;
    }
}

Проблема в том, что мне нужно передать другую форму Input_newAction. Как это сделать?

public class Input_newAction extends CommonAction implements ModelDriven<InputForm>, 
ModelDriven<CopyForm> {
...
}

1 ответ

Вы не можете реализовать две или более специализации одного и того же интерфейса. Вместо этого вы можете создать интерфейс или абстрактный класс для форм, которые будут специализировать ModelDriven и вернуть этот интерфейс через реализацию getModel() из ModelDriven, Когда вызывается действие, вы можете проверить какое-либо условие (либо параметр, либо метод, либо отображение) и вернуть соответствующую модель, чтобы соответствовать указанному условию.

public class Input_newAction extends CommonAction implements ModelDriven<CommonForm> {
  private boolean par;
  public setPar(boolean par){
    this.par = par;
  } 

  @Override
  public CommonForm getModel() {
    if (par)
     return inputForm;  
    else
     return copyForm;
  }
}
Другие вопросы по тегам