【发布时间】:2020-11-25 06:33:23
【问题描述】:
我想重构一些 UI 代码。
我有一个 HTML 表单(这里:用称为 Wicket 的 Java GUI 编写),我在其中放置了一些链接(锚标记)。 我不想一遍又一遍地重复代码,而是想创建一个新的优雅的辅助方法。
String type = "", id = "";
Form form, Service service;
form.add(new Widget("createLink", form) { // the same for read, update, delete
private static final long serialVersionUID = 1L;
@Override
public void onSubmit() {
try {
service.create(type, id); // the same for service.read / update / delete
info("Specific message for create, read, update, delete");
} catch (DataAccessException e) {
error(ExceptionUtils.getRootCauseMessage(e));
}
}
});
form.add(new Widget("readLink", form) {
// ... service.read(...); info("... read ...");
});
form.add(new Widget("updateLink", form) {
// ... service.update(...); info("... update ...");
});
正如你已经猜到的那样,我想要……。喜欢
form.add(createLink(htmlId, form, type, id, message, ?));
我想避免为此创建一个额外的类。但是 Lambda 就可以了。
最好的方法是什么? 而模式又是怎么命名的?
谢谢。
【问题讨论】:
-
我认为您正在寻找的是策略模式,因为在您的表单添加方法中,您正在传递不同的实现小部件
标签: java refactoring wicket