实际使用

2021-05-13  本文已影响0人  ttyttytty

重复的代码片段

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

代码中大量的分支if/else

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

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<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构造器模式

力扣设计模式

上一篇 下一篇

猜你喜欢

热点阅读