2013-06-07 3 views
2

У меня есть этот код для реализации механизма, управляемого моделью.Предоставьте две формы для 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> { 
... 
} 
+0

Я не думаю, что это возможно (не 100% уверен). либо вы можете иметь вложенный объект с одним доменным объектом или можете использовать простое сопоставление объектов вместо модели. –

ответ

0

Вы не можете реализовать две или более специализации одного и того же интерфейса. Вместо этого вы можете создать интерфейс или абстрактный класс для форм, которые будут специализироваться на 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; 
    } 
}