美文网首页
消灭if-else

消灭if-else

作者: 洺优 | 来源:发表于2019-04-04 13:58 被阅读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);
    }
    

    显然优雅了许多对不对。

    相关文章

      网友评论

          本文标题:消灭if-else

          本文链接:https://www.haomeiwen.com/subject/cavfiqtx.html