消灭if-else

2019-04-04  本文已影响0人  洺优

Android 接入 Flutter进行中。

在使用MethodChannel 通信的时候,发现需要很多if-else判断,如下所示,是不是看得真心难过😫 image.png

参考了flutter工程师的写法,感觉简洁许多,主要是使用map来替代了if else。
调整完效果图:
因为使用了lamda看着就更加简单了。


image.png

尽管目前只有一个地方用得上,但是考虑到未来的拓展性,我选择构建了一个单例,。
用一个map来存储名字以及callback,这样就可以随用随注。

public class FltBridgeInstance {
    private static FltBridgeInstance instance = null;
    Map<String, IFltCallBack> methods = new HashMap<>();
    public static FltBridgeInstance getInstance() {
        if (instance == null) {
            Class var0 = FltBridgeInstance.class;
            synchronized(FltBridgeInstance.class) {
                if (instance == null) {
                    instance = new FltBridgeInstance();
                }
            }
        }

        return instance;
    }

    public FltBridgeInstance() {}

    public void registMethod(String methodName, IFltCallBack callBack) {
        methods.put(methodName, callBack);
    }

    public boolean hasMethod(String methodName) {
       return methods.get(methodName)!=null;
    }

    public IFltCallBack getCallBack(String methodName) {
       return methods.get(methodName);
    }
}
public interface IFltCallBack {
    void onMethodCall(MethodCall call, MethodChannel.Result result);
}

显然优雅了许多对不对。

上一篇下一篇

猜你喜欢

热点阅读