У меня есть класс, который представляет базовую страницу с кнопками «вернуться назад», «перейти вперед» и «canel» в Wicket.Но не на всех страницах есть все кнопки, например, на первой странице явно нет «возврата».
Моя идея - определить универсальный ActionHandler
public interface ActionHandler {
void perform();
}
и позволить возврату подклассовподдерживаемые ими действия:
public Derived extends BasicPage {
protected ActionHandler getForwardHandler() {
return new ActionHandler() {
void perform() {
doIt();
}
};
}
}
Вопрос: почему бы не использовать защищенные поля?
public Derived extends BasicPage {
protected forwardHandler = new ActionHandler() {
void perform() {
doIt();
}
};
}
Другой вариант - не использовать наследование (что на самом деле не имеет смысла).здесь) и установите ActionHandlers извне:
Toolbar toolbar = new Toolbar();
toolbar.setForwardHandler(new ActionHandler() {
void perform() {
doIt();
}
});
Причина, по которой я не использую интерфейсы, такие как ForwardHandler и CancelHandler, заключается в том, что я хочу передать обработчик на панель инструментов, что делает ActionHandlers какпараметры.Или вы бы передали всю страницу на панель инструментов и позволили панели инструментов решать, какие кнопки отображать в зависимости от реализованных интерфейсов?Для меня это звучит как плохой ООП.
Идея состоит в том, что не каждая страница должна определять новую панель инструментов, но, возможно, это будет проще ...