我最近得到了以下示例,其中我们将操作名称作为字符串传递给方法,然后方法决定需要调用的函数。
这是解决问题的好方法,还是有更好的方法
[{nome:'abc'}, {nome:'stu'}, {nome:'cde'}].sort(function(a, b) {
if (a.nome < b.nome)
return -1;
if (a.nome > b.nome)
return 1;
return 0;
});
答案 0 :(得分:1)
我会做这样的事情。这可以根据需要进行扩展,显然只是一个例子:
static abstract class ActionHandler {
private String action;
public ActionHandler(String action) {
this.action = action;
}
public boolean canHandleAction(String input) {
return this.action.equals(input);
}
public abstract void handleAction();
}
static class OneActionHandler extends ActionHandler {
public OneActionHandler(String action) {
super(action);
}
@Override
public void handleAction() {
//...
}
}
static class TwoActionHandler extends ActionHandler {
public TwoActionHandler(String action) {
super(action);
}
@Override
public void handleAction() {
//...
}
}
static class Test {
private ActionHandler[] handlers;
public Test() {
handlers = new ActionHandler[]{new OneActionHandler("action1"), new TwoActionHandler("action2")};
}
public void handleAction(String action) {
for(ActionHandler i : handlers) {
if(i.canHandleAction(action)) {
i.handleAction();
break;
}
}
}
}
答案 1 :(得分:0)
这听起来很像react / redux,action/reduction模式。
Reducers指定应用程序的状态如何响应变化 发送到商店的动作。请记住,行动只描述了什么 发生了,但没有描述应用程序的状态如何变化。