美文网首页
实际使用

实际使用

作者: ttyttytty | 来源:发表于2021-05-13 14:48 被阅读0次

    重复的代码片段

    1.如校验是否鉴权啦/统计接口耗时啦,考虑使用面向切面编程,预编译方式和运行期动态代理(反射注解),编译或运行慢一点。例如: 注解用在方法上,获取方法名,打日志?????? Android AOP/AspectJ
    2.如果是流程,大致相同,部分不同,考虑模板模式/多态
    3.部分前置条件,如发送命令前判断设备状态/电量等等,使用责任链模式,
    4.接口都一样,就是不同状态,实现不同逻辑,考虑状态模式,白天类/黑夜类

    代码中大量的分支if/else

    1.策略模式——多态
    1.1 表现形式为“接口”&“实现类”
    1.2 表现形式为“枚举”+“抽象接口”
    1.3 Client类保存具体实现的映射关系

    • 工厂模式
      • 所以使用策略模式时,更好的做法是与工厂模式结合,将不同的策略对象封装到工厂类中,用户只需要传递不同的策略类型,然后从工厂中拿到对应的策略对象即可
    • 查表:有固定顺序的话考虑数组
    • 查表:key-value类似工厂模式MAP保存创建关系 ,或者保存反射的类名

    2.异常场景提前卫语句return;值转换

    if(i==0)return "male";
    if(i==1)return "female";
    
    而不是使用临时变量,最后return:
    if(i==0){
    sex="male";
    }else if(i==1){
    sex="female";}
    return sex;
    

    3.多分支+一段代码逻辑:syncFile

    • 表现形式为“枚举”+“抽象接口”,Map+函数式接口
    Map<String,Function<String,String>>map=new HashMap<>();
     map.put(分支条件,()->{代码})
    map.put("1",resouceId->helper.redPay(resouceId));
    map.put("2",resouceId->helper.greenPay(resouceId));
    map.put("3",resouceId->{return "bulepay";});
    client:
    public String getResult(String key,String rescourceId){
    Function<String,String> result=map.get(key);
    return result.apply(rescourceId);
    }
    

    多个属性,可选设置

    1. 使用builder构造器模式

    力扣设计模式

    相关文章

      网友评论

          本文标题:实际使用

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