什么是设计模式,我们可以将字符串名称传递给方法,该方法选择要调用的其他方法

时间:2018-05-15 01:04:11

标签: android design-patterns

我最近得到了以下示例,其中我们将操作名称作为字符串传递给方法,然后方法决定需要调用的函数。

这是解决问题的好方法,还是有更好的方法

[{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;
});

2 个答案:

答案 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指定应用程序的状态如何响应变化   发送到商店的动作。请记住,行动只描述了什么   发生了,但没有描述应用程序的状态如何变化。