消灭if-else

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

显然优雅了许多对不对。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容