【发布时间】:2010-07-20 08:11:31
【问题描述】:
我有一个类,它代表 Wicket 中带有“后退”、“前进”和“canel”按钮的基本页面。但并非所有页面都有所有按钮,例如。 G。第一页显然没有“返回”。
我的想法是定义一个通用的 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();
}
};
}
另一种选择是不使用继承(这在这里没有真正意义)并从外部设置 ActionHandler:
Toolbar toolbar = new Toolbar();
toolbar.setForwardHandler(new ActionHandler() {
void perform() {
doIt();
}
});
我不使用 ForwardHandler 和 CancelHandler 之类的接口的原因是,我想将处理程序传递给工具栏,将 ActionHandlers 作为参数。还是将整个页面传递给工具栏,让工具栏根据实现的接口决定显示哪些按钮?对我来说,这听起来像是糟糕的 OOP。
这个想法是不是每个页面都必须定义一个新的工具栏,但也许它会更简单......
【问题讨论】:
标签: java oop inheritance interface wicket